我在Python方面还很陌生,最近才开始研究它。我在阅读讲师为课程提供的csv文件的标题部分时遇到问题。
我正在尝试使用dictReader函数确定最高元素编号,并打印具有最高元素编号的头像。对于Aang来说,他最高的元素是“空气”,而Gyatso的最高元素是“水”,但是我只能打印出它们的最高值。我知道dictReader的运行方式是for循环只能跳过标题,逐行遍历csv文件。
.csv文件:
我的代码:
print("{0:<12}|{1:>12}".format("Avatar Name", "Top Element"))
import csv
filePath = "data.csv"
with open(filePath) as csvfile:
reader = csv.DictReader(csvfile)
element_air = 'Air'
element_water = 'Water'
element_earth = 'Earth'
element_fire = 'Fire'
for row in reader:
max_element = max(int(row['Air']),int(row['Water']),int(row['Earth']),int(row['Fire']))
if(max_element == row['Air']):
max_element = str(row[4])
if(max_element == row['Water']):
max_element = str(row[5])
if(max_element == row['Earth']):
max_element = str(row[6])
if(max_element == row['Fire']):
max_element = str(row[7])
print("{0:<12}|{1:^5}".format(row['name'], max_element))
print("==============================================")
我试图将max_element转换为字符串,但仍会打印出相同的结果。 row [4],row [5]等是我试图将此max元素分配给的标头。
如果max元素与最大值匹配,我什至尝试分配max_element == element_air ..... element_fire,以便它将打印最大值的字符串。
实际结果:
答案 0 :(得分:0)
您无需在每个if语句中重新分配max_element
,只需将这个元素打印出来
elements = ('Air', 'Water', 'Fire', 'Earth')
for row in reader:
max_element = max(row[elem] for elem in elements)
for element in elements:
if row[element] == max_element:
print("{0:<12}|{1:^5}".format(row['name'], element))
break