训练任务python if循环的问题

训练任务python if循环的问题,python,Python,我正在尝试创建一个循环来收集天气信息,并打印天气在某些预设值内的天数。我很挣扎,因为打印只使用最后一个输入来列出日期,而第一个输入被丢弃 使用注释中的更新后,我的代码看起来是这样的,但仍然无法正常工作,代码忽略大于和小于,并在前3天打印。它还会产生以下错误:IndexError:字符串索引超出范围 week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] rainlist = []

我正在尝试创建一个循环来收集天气信息,并打印天气在某些预设值内的天数。我很挣扎,因为打印只使用最后一个输入来列出日期,而第一个输入被丢弃

使用注释中的更新后,我的代码看起来是这样的,但仍然无法正常工作,代码忽略大于和小于,并在前3天打印。它还会产生以下错误:IndexError:字符串索引超出范围

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

rainlist = []
windlist = []
temperaturelist = []

for day in week:
    rain = input('What is the amount of rain today? ')
    rainlist.append(rain)

    wind = input('What is the current windspeed?  ')
    windlist.append(wind)

    temperature = input('What is the temperature? ')
    temperaturelist.append(temperature)

for idx, day in enumerate(week) : 
    if rain[idx] > '1':
        print(f'it is more than 1mm rain on {day} . It was  {rainlist[idx]}')
    if wind[idx] > '10':
        print(f'it is more than 10m/s of wind on {day}. It was  {windlist[idx]} m/s')     
    if temperature[idx] < '5':
        print(f'it was less than 5 degrees on {day}. It was {temperaturelist[idx]} degrees celsius')
week=[“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”]
rainlist=[]
风表=[]
温度列表=[]
对于一周中的某一天:
rain=输入(“今天的降雨量是多少?”)
rainlist.append(雨)
风=输入(“当前风速是多少?”)
追加(风)
温度=输入(“温度是多少?”)
附加温度列表(温度)
对于idx,枚举中的天(周):
如果雨水[idx]>1':
打印(f'it't more 1mm rain on{day}。它是{rainlist[idx]}'))
如果风[idx]>10':
打印(在{day}上的风速超过10米/秒,是{windlist[idx]}米/秒)
如果温度[idx]<'5':
打印(f'在{day}时温度低于5度。温度为{temperaturelist[idx]}摄氏度')

您需要为风、雨和温度列表编制索引,您可以使用
枚举
。也可使用
格式
进行输出:

for idx, day in enumerate(week) : 
    if rain[idx] > 1:
        print('it is more than 1mm rain on {}. It was {} mm'.format(day,
        rain[idx]))
    if wind[idx] > 10:
        print('it is more than 10m/s of wind on {}. It was \ 
        {} m/s'.format(day, wind[idx]))        
    if temperature[idx] < 5:
        print('it was less than 5 degrees on {}. It was {} degrees \
        celsius'.format(day, temperature[idx]))
对于idx,枚举中的天(周):
如果雨水[idx]>1:
打印({}天的降雨量超过1毫米。是{}毫米。格式(天,
雨[idx]))
如果风[idx]>10:
打印({}上的风速超过10米/秒。它是\
{}m/s'.格式(日、风[idx]))
如果温度[idx]<5:
print({}上的温度小于5度。它是{}度\
摄氏度'。格式(天,温度[idx]))

在Python3-x中,最好使用
f'因为{day}的降雨量超过1mm。它是{rain[idx]}
而不是{code>'something{}。格式(变量)这不起作用,因为我尝试了编辑,我得到的唯一结果是:{day}的温度低于5度。当时气温为摄氏度,{day}的降雨量超过1毫米。这是{rain[idx]}在\{day}的风速超过10米/秒。当时是{wind[idx]}米/秒,{day}时低于5度。这是\{temperature[idx]}摄氏度\度的回溯(最后一次调用):文件“/Users/olenese/Downloads/engelsk regnliste.py”,第18行,在if rain[idx]>“1”:索引器:字符串索引超出范围range@olense,我认为这里的代码有点错误,您应该让列表中的项不可变,将
rain[idx]
更改为
rainlist[idx]
等等。如果您想使用Simon的方法格式化字符串,请注意字符串前面的
f
,即
f“it is…celsius”
@MD98我认为str.format()在Python3-x中仍然可以,但您将其放在了错误的位置,
print(str.format()
raise AttributeError,它应该是
print(str.format())
@adamkwm是正确的,谢谢。刚刚更正了它。如果您只是复制了代码,应该很容易发现错误。另外,请注意,您在if子句中比较的值不是字符串。字符串被解释为文本,无法与数值进行比较。请确保您没有将数字放在“”中。您还需要更改这些rain[idx]到if语句中的rainlist[idx]。rain[idx]从rain中获取子字符串,例如rain=“12”,然后rain[0]=“1”和rain[1]=“2”,并且没有rain[2],所以它的raise索引器会提升。rainlist[idx]从列表中获取项目,例如rainlist=[“1”、“2”],然后rain[0]=“1”和rain[1]=“2”,如果您的rainlist中的项目少于您的周数,它也会引发Indexer错误。您还需要将输入和比较更改回整数。对于字符串比较,它会比较第一个元素的ascii值,因此例如,“2”>“10”和“40”<“5”都将返回True,因为“2”>“1”和“4”<“5”,而2>10和40<5将返回False。