使用format()打印三行输出给定的字符串列表

时间:2018-12-06 05:13:59

标签: python

大家好,我还有另一个CSC110问题。我只是在尝试学习做事的最佳方法。我敢肯定这会很容易。

基本上,我需要在标准输出中输出一些国家的名称,如下所示:

Afghanistan                   Albania                       Armenia
Bangladesh                    Benin                         Bhutan
Bolivia                       Burkina Faso                  Burundi
Cabo Verde                    Cambodia                      Cameroon
Central African Republic      Chad                          Comoros
Congo                         Cote D'Ivoire                 D.P.R. Of Korea
D.R. Of The Congo             Djibouti                      Egypt
El Salvador                   Eritrea                       Ethiopia
Gambia                        Georgia                       Ghana
Guatemala                     Guinea                        Guinea-Bissau
Guyana                        Haiti                         Honduras
India                         Indonesia                     Kenya
Kiribati                      Kosovo                        Kyrgyzstan
Lao People'S Dr               Lesotho                       Liberia
Madagascar                    Malawi                        Mali
Marshall Islands              Mauritania                    Micronesia (Fs Of)
Mongolia                      Morocco                       Mozambique
Myanmar                       Nepal                         Nicaragua
Niger                         Nigeria                       Pakistan
Papua New Guinea              Paraguay                      Philippines
Republic Of Moldova           Rwanda                        Samoa
Sao Tome And Principe         Senegal                       Sierra Leone
Solomon Islands               Somalia                       South Sudan
Sri Lanka                     State Of Palestine            Sudan
Swaziland                     Syrian Arab Republic          Tajikistan
Togo                          U.R. Of Tanzania: Mainland    Uganda
Ukraine                       Uzbekistan                    Vanuatu
Viet Nam                      Yemen                         Zambia
Zanzibar                      Zimbabwe

我编写了一个执行此功能的函数,称为表(国家/地区)。虽然我所写的作品似乎并不是最有效的方法。虽然我不必使用format()函数进行赋值,但这是我最满意的。如果有更好的方法,请随时向我展示另一种方法,但是请记住,这是我的第一门编程语言/课程。

这是我编写的代码:

def table(countries):
    counter = 0 #Four counting when I've printed 3 columns
    for outer in range(len(countries)):
        print(format(countries[outer], '30'), end ='')
        counter  +=1 
        if counter  == 3:
            counter  = 0
            print() #Starts a new column

提前谢谢!

2 个答案:

答案 0 :(得分:2)

您可以尝试列表理解:

countries = ['aaa','bbb','ccc','dd','eeeee','fff','ggggggg']
print('\n'.join([" ".join([country.ljust(30) for country in countries[i:i+3]]) for i in range(0,len(countries),3)]))

这将导致:

aaa                            bbb                            ccc                           
dd                             eeeee                          fff                           
ggggggg       

首先,我们将国家/地区分为三个国家-for i in range(0,len(countries),3)

然后,我们将该子列表中的每个国家/地区设置为固定长度的字符串,并用空格填充直到长度为30-[country.ljust(30) for country in countries[i:i+3]]

之后,我们将每个子列表合并为一个字符串-" ".join(...)

最后,我们将该子列表的每个字符串连接到一个带有行尾符号-'\n'.join(...)

的字符串中

值得一提的是,每个字符串的末尾都有尾随空格-如果不需要,可以调用rstrip()摆脱它们。

答案 1 :(得分:2)

您可以修改并且不需要其他变量。

def table(countries):
    for outer in range(len(countries)):
      if outer%3  == 0:
        print() #Starts a new column
      print(format(countries[outer], '30'), end ='')