Python-如何在带有字符串的2D列表中计算整数?
我应该创建一个程序来计算列表中的最大、最小和平均温度。列表包含月份名称、本月最高和最低温度:Python-如何在带有字符串的2D列表中计算整数?,python,python-3.x,Python,Python 3.x,我应该创建一个程序来计算列表中的最大、最小和平均温度。列表包含月份名称、本月最高和最低温度: months = [ ["January", 6,3], ["February", 7,3], ["March", 10,4], ["April", 13,6], ["May",
months = [ ["January", 6,3],
["February", 7,3],
["March", 10,4],
["April", 13,6],
["May", 17,9],
["June", 20,12],
["July", 22,14],
["August", 21,14],
["September",19,12],
["October", 14,9],
["November", 10,6],
["December", 7,3] ]
我已经使用了一些代码来了解如何使用for循环计算最高温度,但它没有按计划工作:
for m in months:
for temp in m:
if temp > temp1:
temp = maxTemp
print(temp)
我收到TypeError:'>'在'str'和'int'实例之间不受支持。
在我的例子中,使用包含字符串的列表的正确方法是什么?您正在对列表中的所有元素运行for循环,为了只查看温度,可以使用
for m in months:
for temp in m[1:]:
它只查看列表中的整数元素,即第二个和第三个元素,并忽略第一个元素,该元素是一个字符串,无法与整数进行比较(这也是您的错误来源)。您正在对列表中的所有元素运行for循环,要仅查看温度,可以使用
for m in months:
for temp in m[1:]:
它只查看列表中的整数元素,即第二个和第三个元素,并忽略第一个元素,该元素是字符串,无法与整数进行比较(这也是错误的来源)。您的第一个
for
循环将不会生成月份名称,而是包含['Mont name',temp1,temp2]的列表
因此,您的代码应如下所示:
for m in months:
m_name = m[0]
temp_vals = m[1:] # if you have more than two temperature values
temp_min = min(temp_vals)
temp_avr = sum(temp_vals)/len(temp_vals)
temp_max = max(temp_vals)
print(f'{m_name}: T_min = {temp_min}; T_avr = {temp_avr}; T_max = {temp_max};')
其中:
January: T_min = 3; T_avr = 4.5; T_max = 6;
February: T_min = 3; T_avr = 5.0; T_max = 7;
March: T_min = 4; T_avr = 7.0; T_max = 10;
April: T_min = 6; T_avr = 9.5; T_max = 13;
May: T_min = 9; T_avr = 13.0; T_max = 17;
June: T_min = 12; T_avr = 16.0; T_max = 20;
July: T_min = 14; T_avr = 18.0; T_max = 22;
August: T_min = 14; T_avr = 17.5; T_max = 21;
September: T_min = 12; T_avr = 15.5; T_max = 19;
October: T_min = 9; T_avr = 11.5; T_max = 14;
November: T_min = 6; T_avr = 8.0; T_max = 10;
December: T_min = 3; T_avr = 5.0; T_max = 7;
您的第一个
for
循环将不会生成月份名称,而是包含['Mont name',temp1,temp2]
的列表
因此,您的代码应如下所示:
for m in months:
m_name = m[0]
temp_vals = m[1:] # if you have more than two temperature values
temp_min = min(temp_vals)
temp_avr = sum(temp_vals)/len(temp_vals)
temp_max = max(temp_vals)
print(f'{m_name}: T_min = {temp_min}; T_avr = {temp_avr}; T_max = {temp_max};')
其中:
January: T_min = 3; T_avr = 4.5; T_max = 6;
February: T_min = 3; T_avr = 5.0; T_max = 7;
March: T_min = 4; T_avr = 7.0; T_max = 10;
April: T_min = 6; T_avr = 9.5; T_max = 13;
May: T_min = 9; T_avr = 13.0; T_max = 17;
June: T_min = 12; T_avr = 16.0; T_max = 20;
July: T_min = 14; T_avr = 18.0; T_max = 22;
August: T_min = 14; T_avr = 17.5; T_max = 21;
September: T_min = 12; T_avr = 15.5; T_max = 19;
October: T_min = 9; T_avr = 11.5; T_max = 14;
November: T_min = 6; T_avr = 8.0; T_max = 10;
December: T_min = 3; T_avr = 5.0; T_max = 7;
您可以使用带有关键参数的max函数首先查看您的
temp
:这是[“一月”,6,3],
如果您重复此操作,您将得到“一月”
,然后是6
,然后是3
,这就是错误消息告诉您的:以这种方式比较“一月”
与temp1
是不可能的(而且很可能也不是你想要的)你可以使用max函数和关键参数首先查看你的temp
:它是[“一月”,6,3],
如果你重复这个,你会得到“一月”
,然后6
,然后3
,这就是错误消息告诉你的:比较“一月”
使用temp1
这样做是不可能的(很可能也不是您想要的)