下午好!我对Python比较陌生 - 我正在为一个班级做作业。
此代码的目标是下载文件,向文件添加一行数据,然后创建迭代每行数据的while循环,并从数据中打印出城市名称和最高平均温度为那个城市。
我的代码如下 - 我的输出正常,没问题。我遇到的唯一问题是IndexError: list index out of range
- 最后。
我在StackOverflow上搜索过 - 以及使用Python在线挖掘range()函数文档。我想我只需要正确地计算范围(),我就完成了它。
如果我取出范围,我会得到同样的错误 - 所以我试图在mean_temps中将for / in更改为 - for city: 结果是输出只显示了7个城市中的4个 - 跳过其他所有城市。
任何建议都将不胜感激! 这是我的代码 - 下面的屏幕截图链接显示输出和错误:
!curl https://raw.githubusercontent.com/MicrosoftLearning/intropython/master/world_temp_mean.csv -o mean_temp.txt
mean_temps = open('mean_temp.txt', 'a+')
mean_temps.write("Rio de Janeiro,Brazil,30.0,18.0")
mean_temps.seek(0)
headings = mean_temps.readline().split(',')
print(headings)
while mean_temps:
range(len(city_temp))
for city in mean_temps:
city_temp = mean_temps.readline().split(',')
print(headings[0].capitalize(),"of", city_temp[0],headings[2], "is", city_temp[2], "Celsius")
mean_temps.close()
答案 0 :(得分:0)
当您确实想要使用__radd__
循环时,您已经使用了def __add__(self, other):
print('using __add__()')
if isinstance(other, Adder):
other = other.data
return self.data + other
def __radd__(self, other):
print('using __radd__()')
return self.__add__(other)
循环。您的while
循环没有条件,因此,它将评估为for
,并永远运行。您应该在模式中使用while
循环
True
在您的情况下,您将需要使用
for
编辑:
如果必须使用while循环,则可以使用for x in x:
do stuff
循环增加的变量for x in range(len(city_temp)):
for city in means_temp:
。 x
循环可以在while
小于while
时运行。
一个基本的例子是
x
编辑2:
你还说他们希望你离开一段时间。如果您希望while循环永远运行,除非以后满足条件,您可以使用break
command来停止range(len(city_temp))
或text = "hi"
counter = 0
while counter < 10:
print(text)
counter += 1
循环。
答案 1 :(得分:0)
我一直坚持使用索引错误。我原来的代码是:
city_temp = mean_temp.readline().strip(" \n").split(",")
while city_temp:
print("City of",city_temp[0],headings[2],city_temp[2],"Celcius")
city_temp = mean_temp.readline().split(",")
所以我读了一行,然后在循环中打印行,从读取行创建列表,如果列表为空,或者为false,则为break。问题是我得到了和你一样的错误,这是因为在读完最后一行后,city_temp仍然是真的。如果你添加..
print(city_temp)
到你的代码,你会看到city_temp返回为“”,即使它是一个空字符串,列表也有内容,所以会返回true。我最好的猜测(也就是猜测)它会查找拆分条件并返回任何内容,然后将列表填充为空字符串。
我找到的解决方案是在创建列表之前首先(或在整个循环结束时)读取字符串:
city_temp = mean_temp.readline()
while city_temp:
city_temp = city_temp.split(',')
print(headings[0].capitalize(),"of",city_temp[0],headings[2],"is",city_temp[2],"Celcius")
city_temp = mean_temp.readline()
这次time_temp被while循环检查为字符串,现在返回false。希望这有助于其他与此斗争的人