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

简单python的快速帮助(学习列表),python,Python,我正在学习如何使用循环,并且正在做这个练习程序。然而,我唯一遇到一些困难的是,对于每个输入,只正确地打印列表一次。这是我的密码: 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":

我正在学习如何使用循环,并且正在做这个练习程序。然而,我唯一遇到一些困难的是,对于每个输入,只正确地打印列表一次。这是我的密码:

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          
它正在打印所有可能的排放量和人均排放量的组合,但我只希望它打印我输入的每个国家的排放量/人均排放量。有人知道如何解决这个问题吗?

不要这样做:

for x in range(len(country_list)):
    for y in range(len(emission_list)):
        for z in range(len(capita_list)):
            print country_list[x]+": Emission="+str(emission_list[y]),"and Capita="+str(capita_list[z])
这样做:

for x in range(len(country_list)):
    print country_list[x]+": Emission="+str(emission_list[x]),"and Capita="+str(capita_list[x])
注意:如果您创建一个具有一个国家名称、一个排放量和一个人均的类,那么您的代码的结构将更有意义。这样的错误是不可能的,因为无论如何,您只有一个要迭代的对象列表。

而不是这样做:

for x in range(len(country_list)):
    for y in range(len(emission_list)):
        for z in range(len(capita_list)):
            print country_list[x]+": Emission="+str(emission_list[y]),"and Capita="+str(capita_list[z])
这样做:

for x in range(len(country_list)):
    print country_list[x]+": Emission="+str(emission_list[x]),"and Capita="+str(capita_list[x])

注意:如果您创建一个具有一个国家名称、一个排放量和一个人均的类,那么您的代码的结构将更有意义。这样的错误是不可能的,因为无论如何,您只有一个对象列表可以迭代。

这是一个学习练习,但执行此任务的python方法是使用

实际上,您应该以这种方式存储结果(一个三元组的列表),而不是用三个列表压缩在一起

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)

作为一个学习练习,这是可以的,但是执行此任务的python方法是使用

实际上,您应该以这种方式存储结果(一个三元组的列表),而不是用三个列表压缩在一起

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)

我宁愿用字典来代替。它看起来像这样:

countries = {}
while True:
    inp = input("Enter country or (done to end): ")
    if inp == 'done':
        break;
    countries[inp] = {'emission': input("Enter emissions: ")}
    countries[inp]['capita']   = input("Enter capita: ")

for i in countries:
    print(i, 'Emission:', countries[i]['emission'],
          'and Capita', countries[i]['capita'])
输入:

Enter country or (done to end): test
Enter emissions: 1
Enter capita: 2
Enter country or (done to end): test2
Enter emissions: 3
Enter capita: 4
Enter country or (done to end): done
输出:

test Emission: 1 and Capita 2
test2 Emission: 3 and Capita 4
最后,字典看起来是这样的:

{'test': {'emission': '1', 'capita': '2'}, 'test2': {'emission': '3', 'capita': '4'}}

我宁愿用字典来代替。它看起来像这样:

countries = {}
while True:
    inp = input("Enter country or (done to end): ")
    if inp == 'done':
        break;
    countries[inp] = {'emission': input("Enter emissions: ")}
    countries[inp]['capita']   = input("Enter capita: ")

for i in countries:
    print(i, 'Emission:', countries[i]['emission'],
          'and Capita', countries[i]['capita'])
输入:

Enter country or (done to end): test
Enter emissions: 1
Enter capita: 2
Enter country or (done to end): test2
Enter emissions: 3
Enter capita: 4
Enter country or (done to end): done
输出:

test Emission: 1 and Capita 2
test2 Emission: 3 and Capita 4
最后,字典看起来是这样的:

{'test': {'emission': '1', 'capita': '2'}, 'test2': {'emission': '3', 'capita': '4'}}

另外,你知道我如何将我输入的所有国家的所有排放量相加吗?还有,你知道我如何将我输入的所有国家的所有排放量相加吗?