我正在学习如何使用循环,并且正在做这个程序来练习。但是,我唯一遇到的困难是正确打印列表每次输入一次。这是我的代码:
country_list=[]
emission_list=[]
capita_list=[]
total=0
end_loop=False
together=[]
while True:
country=raw_input("Enter country or (done to end): ")
if country=="done":
break
else:
emission=input("Enter emissions: ")
capita=input("Enter capita: ")
country_list.append(country)
emission_list.append(emission)
capita_list.append(capita)
total+=1
for x in range(len(country_list)):
for y in range(len(emission_list)):
for z in range(len(capita_list)):
end_loop=True
print country_list[x]+": Emission="+str(emission_list[y]),"and Capita="+str(capita_list[z])
我正在输入:
Enter country or (done to end): Testcase
Enter emissions: 1
Enter capita: 2
Enter country or (done to end): Testcase2
Enter emissions: 3
Enter capita: 4
Enter country or (done to end): done
这是我得到的输出:
Testcase: Emission=1 and Capita=2
Testcase: Emission=1 and Capita=4
Testcase: Emission=3 and Capita=2
Testcase: Emission=3 and Capita=4
Testcase2: Emission=1 and Capita=2
Testcase2: Emission=1 and Capita=4
Testcase2: Emission=3 and Capita=2
Testcase2: Emission=3 and Capita=4
它正在打印排放量和人均的所有可能组合,但我只希望它打印我输入的每个国家/地区的排放量/人均值。有人知道如何解决这个问题吗?
请您参考如下方法:
这可以作为学习练习,但是执行此任务的 Pythonic 方法是使用 zip .
for cnty, em, cap in zip(country_list, emission_list, capita_list):
print "{}: Emission={} and Capita={}".format(cnty, em, cap)
实际上,您应该以这种方式存储结果(一个三元组列表),而不是稍后将三个列表压缩在一起。
cecs = []
while True:
country = raw_input("Enter country (or nothing to end): ").strip()
if not country:
break
emission = input("Enter emissions: ").strip()
capita = input("Enter capita: ").strip()
cecs.append((country, emission, capita))
# total = len(cecs)
for cec in cecs:
print "{}: Emission={} and Capita={}".format(*cec)
