Skip to main content
 首页 » 编程设计

python之简单python的快速帮助(学习列表)

2025年05月04日15mayingbao

我正在学习如何使用循环,并且正在做这个程序来练习。但是,我唯一遇到的困难是正确打印列表每次输入一次。这是我的代码:

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)