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

Python 使用format()打印给定字符串列表的三行输出,python,Python,嗨,伙计们,我还有一个问题。我只是想学习做事情的最佳方式。我相信这很容易 基本上,我需要在标准输出中输出一些国家的名称,如下所示: Afghanistan Albania Armenia Bangladesh Benin Bhutan Bolivia Burkina Faso

嗨,伙计们,我还有一个问题。我只是想学习做事情的最佳方式。我相信这很容易

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

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
我已经编写了一个函数来完成这个任务,称为table(countries)。虽然我写的东西很管用,但这似乎不是最有效的方法。虽然我不必为赋值使用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

提前谢谢

您可以尝试列表理解:

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       
首先,我们将每个国家/地区分为3个列表-
范围内的i(0,len(国家/地区),3)

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

之后,我们将每个子列表加入一个字符串-
“”。加入(…)

最后,我们将该子列表的每个字符串连接成一个带有行尾符号-
“\n”的字符串。连接(…)


值得注意的是,每个字符串的末尾都会有尾随空格-如果不需要尾随空格,可以调用rstrip()来消除它们。

您可以尝试列表理解:

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       
首先,我们将每个国家/地区分为3个列表-
范围内的i(0,len(国家/地区),3)

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

之后,我们将每个子列表加入一个字符串-
“”。加入(…)

最后,我们将该子列表的每个字符串连接成一个带有行尾符号-
“\n”的字符串。连接(…)


值得注意的是,每个字符串的末尾都会有尾随空格-如果不需要尾随空格,可以调用rstrip()来去掉它们。

您可以修改,不需要另一个变量

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

您可以修改,不需要其他变量

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

这很好,但我必须将if语句移到print语句上方,否则我的输出在第一次传递时列数会错误。这很好,但我必须将if语句移到print语句上方,否则我的输出在第一次传递时列数会错误。此方法在我把它放在了我的代码中,但现在超出了我的知识范围。不过我要用它来学习。谢谢。当我把这个方法放在我的代码中时,它是有效的,但是现在超出了我的知识范围。不过我要用它来学习。非常感谢。