首页 > 解决方案 > 训练任务python if循环的问题

问题描述

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

使用评论中的更新后,我的代码看起来像这样,但它仍然无法正常工作,代码忽略大于和小于,并打印前 3 天。它也会产生这个错误:IndexError: string index out of range

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')

标签: python

解决方案


您需要索引风、雨和温度列表,您可以使用enumerate它。也format用于输出:

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]))

推荐阅读