Python 表显示代码显示错误的列
我写了一个程序,显示哪些国家在人类发展方面被划分为“非常高”、“高”、“中”或“低”。国家将分为以下几类:Python 表显示代码显示错误的列,python,Python,我写了一个程序,显示哪些国家在人类发展方面被划分为“非常高”、“高”、“中”或“低”。国家将分为以下几类: [0.903, 'Very High'] [0.895, 'Very High'] [0.856, 'Very High'] [0.763, 'Very High'] [0.743, 'High'] [0.649, 'High'] [0.55, 'High'] [0.473, 'Medium'] [0.518, 'High'] “非常高”,0.75
[0.903, 'Very High']
[0.895, 'Very High']
[0.856, 'Very High']
[0.763, 'Very High']
[0.743, 'High']
[0.649, 'High']
[0.55, 'High']
[0.473, 'Medium']
[0.518, 'High']
Country HDI score
Japan 0.903
Finland 0.895
Qatar 0.856
Lebanon 0.763
Armenia 0.743
Iraq 0.649
Pakistan 0.550
Djibouti 0.473
Cameroon 0.518
['Pakistan', 'High']
['Qatar', 'Very High']
['Iraq', 'High']
['Armenia', 'High']
['Japan', 'Very High']
['Finland', 'Very High']
['Lebanon', 'Very High']
['Djibouti', 'Medium']
['Cameroon', 'High']
我用这段代码写了:
Country= ["Japan","Finland","Qatar","Lebanon","Armenia","Iraq","Pakistan",
"Djibouti","Cameroon"]
Country[0]=0.903
Country[1]=0.895
Country[2]=0.856
Country[3]=0.763
Country[4]=0.743
Country[5]=0.649
Country[6]=0.550
Country[7]=0.473
Country[8]=0.518
for Country in Country:
if Country>0.76:
print [Country, "Very High"]
elif 0.76>Country>0.51:
print [Country,"High"]
elif 0.51>Country>0.26:
print [Country,"Medium"]
elif Country < 0.26:
print [Country,"Low"]
我不明白我在这里遗漏了什么,为什么它会打印HDI而不是国家的名称,尽管我首先介绍了国家的名称。这里似乎有一些地方出了问题 您可以将
用于国家/地区中的国家/地区
。。陈述…(让我很困惑)。无论如何,请使用国家/地区作为列表名:
Countries = ["Japan","Finland","Qatar","Lebanon","Armenia","Iraq","Pakistan",
"Djibouti","Cameroon"]
Countries[0]=0.903 # overriding in Countries the 'Japan' Country name with the value '0.903'
... snippet...
for Country in Countries:
...snippet...
你也几乎混合了清单和口述。让我们坚持列表+元组
尝试:
然后你会得到:
for country in Countries:
my_country_name = country[0]
my_country_value = country[1]
if my_country_value >0.76:
print [my_country_name, "Very High"]
elif ... :
print ...
etc..
..snippet...
享受吧 您使用的是
列表
来定义国家及其人类发展指数,但在输入人类发展指数值时,您是在修改列表,而不是为每个国家附加一个值
让我们快速了解一下您早期的几个步骤:
Country = ["Japan",
"Finland",
"Qatar",
"Lebanon",
"Armenia",
"Iraq",
"Pakistan",
"Djibouti",
"Cameroon"]
如果我定义了它,然后在Python shell中打印出来:
> print Country
['Japan', 'Finland', 'Qatar', 'Lebanon', 'Armenia', 'Iraq', 'Pakistan', 'Djibouti', 'Cameroon']
一切看起来都很好
但如果我运行下一行代码:
> Country[0]=0.903
我们再把它打印出来:
> print Country
[0.903, 'Finland', 'Qatar', 'Lebanon', 'Armenia', 'Iraq', 'Pakistan', 'Djibouti', 'Cameroon']
我们刚刚用0.903
替换了Japan
,因为您在执行Country[0]
时替换了Country
列表中的原始值
因此,你真正想要的是将每个国家与各自的人类发展指数值联系起来。实现这一点的一种方法是使用,它将某个东西与另一个东西关联起来
使用字典的基本语法是:
countries = { 'Japan': 0.903,
'Finland': 0.895,
# etc
}
然后可以按键对其进行迭代,并使用值。下面是适合于使用字典的代码,它使用字典的键和值在字典中进行迭代
countries = {
'Japan': 0.903,
'Finland': 0.895,
'Qatar': 0.856,
'Lebanon': 0.763,
'Armenia': 0.743,
'Iraq': 0.649,
'Pakistan': 0.550,
'Djibouti': 0.473,
'Cameroon': 0.518
}
for country, hdi in countries.iteritems():
if hdi > 0.76:
print [country, "Very High"]
elif 0.76 > hdi > 0.51:
print [country,"High"]
elif 0.51 > hdi > 0.26:
print [country,"Medium"]
elif hdi < 0.26:
print [country,"Low"]
您会注意到订单与原始列表不同。普通词典不保持插入顺序
注意我做的一些风格上的事情:
- 我对变量使用小写名称
- 我不使用同一个变量来指代不同的事情,就像您为
国家所做的那样
- 数学比较中的更多间距
Country
是一个列表,您首先将国家名称放入其中,然后用HDI覆盖列表中的每个项目。您需要定义一个嵌套结构,而不是单一的平面数组。您将国家定义为一个列表:Country=[“日本”、“芬兰”…]
当您看起来想要一本字典时:Country={“日本”:0.903,“芬兰”:0.895,…}
['Pakistan', 'High']
['Qatar', 'Very High']
['Iraq', 'High']
['Armenia', 'High']
['Japan', 'Very High']
['Finland', 'Very High']
['Lebanon', 'Very High']
['Djibouti', 'Medium']
['Cameroon', 'High']
country = [
("japan", 0.903),
("Finland", 0.895),
("Qatar", 0.856),
("Lebanon", 0.763),
("Armenia", 0.743),
("Iraq", 0.649),
("Pakistan", 0.550),
("Djibouti", 0.473),
("Cameroon", 0.518)
]
v1 = ''
for c, v in country:
if v < 0.26:
v1 = "very low"
elif v > 0.26 and v < 0.51:
v1 = "low"
elif v > 0.51 and v < 0.76:
v1 = "High"
else:
v1 = "Very High"
print("{:10} {:6} {:10}".format(c, v, v1))
japan 0.903 Very High
Finland 0.895 Very High
Qatar 0.856 Very High
Lebanon 0.763 Very High
Armenia 0.743 High
Iraq 0.649 High
Pakistan 0.55 High
Djibouti 0.473 low
Cameroon 0.518 High