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语句上方,否则我的输出在第一次传递时列数会错误。此方法在我把它放在了我的代码中,但现在超出了我的知识范围。不过我要用它来学习。谢谢。当我把这个方法放在我的代码中时,它是有效的,但是现在超出了我的知识范围。不过我要用它来学习。非常感谢。