我正在创建一个附加输入列表的函数。一天中需要准确的24个项目。我正在使用范围功能来执行此操作。我需要验证这个输入。但是我似乎无法每次都正确验证它或者我已经得到了正确的验证,但代码提示超过24个输入。
def get(list):
for i in range(24):
tem=float(input("Hourly tempature (00:00-23:00): "))
if tem < -50 or tem > 150:
print ("Enter tempatures between -50 and 130")
else:
tem=float(input("Hourly tempature (00:00-23:00)"))
list.append(tem)
答案 0 :(得分:2)
将input
放在else
块中,而不是if
,意味着当第一个输入正确时,代码会在循环内再次提示输入,而不是错误。
在任何情况下,如果他们输错了,就不会再检查。你需要使用while循环。见https://stackoverflow.com/a/23294659/2482744
答案 1 :(得分:0)
有几点:
input("Temperature at "+str(i)+":00 hours:")
list
作为变量。尝试使用描述其用途的变量,例如myTemperatureList
扩展上面的第3点,您希望输入验证代码执行的操作是提示温度,并检查温度是否在范围内。如果是,则应将值添加到列表中,如果不是,则应丢弃该值,并再次提示用户输入。
这可以通过多种方式完成。例如,使用while
循环,可能的解决方案可能是:
def get(myTemperatureList):
for i in range(24):
while True:
#This is so that when an error message is printed,
#the user is prompted again for input, for as long as they
#are providing bad input
try:
#You'll want this try-except block in case the user doesn't enter a number
tem=float(input("Temperature at "+str(i)+":00 hours:"))
#This is basically the sames as in your code
if tem < -50 or tem > 150:
print ("Enter a temperature between -50 and 130")
#Same logic as in your code, prints an error message
#when the temperature is out of bounds
else:
#If the temperature is valid, break out of the while loop
break
except ValueError:
print("Enter a number")
myTemperatureList.append(tem)
您也可以通过其他方式解决此问题,例如,使用带有验证函数的递归。