如何在Python中实现温度处于特定范围时打印提示信息
问题描述
我是Python新手,正在编写一个将华氏温度转换为摄氏温度的程序,该程序还需要提示温度过高或过低。我已完成温度转换和高低温判断,但无法实现当温度处于可接受范围(82-87摄氏度)时打印提示信息。
现有代码
def far_to_cel(temp): return (temp - 32) * 5 / 9 celcius=0 #checks that input is an int otherwise they get to try input again while(True): try: fahrenheite= int(input ("Skriv in temeraturen i fahrenheite i heltal här tack: ")) break except: print("Du måste fylla i heltal, försök igen") #checks if temp is to low or to high while celcius<82 or celcius>87: far_to_cel(fahrenheite) celcius = far_to_cel(fahrenheite) if celcius<82: print("Det är tyvärr för kallt att basta") break elif celcius>87: print("Det är tyvärr för varmt för att basta") break
尝试的错误代码
bastu_range= range(82,87) #sätter ett värde inom ett spann #max(87) and min(82): #far_to_cel(farenheite) #float(max(87)) and float (min(82)) #celcius = far_to_cel(fahrenheite) #and celcius!= <82.0 and celcius!= >87.0: #if its ok temp it will print float and say its ok temp if celcius == bastu_range: print("Nu är bastun {} grader celcius, nu kan ni basta".format (round(celcius,1))) input("Tryck Enter för att avsluta")
我通过远程课程学习,与导师联系有限,目前陷入困境,请求帮助修改代码以实现当温度处于82-87摄氏度范围时打印提示信息的功能。
解决方案
你的代码主要有两个核心问题:
- 第二个
while循环逻辑错误:当温度在82-87之间时,循环条件celcius<82 or celcius>87不成立,循环直接跳过,根本不会触发正常温度的提示。 - 尝试代码中用
range(82,87)判断浮点温度是错误的:range生成的是整数序列,而转换后的摄氏温度是浮点数,直接用==比较永远不会成立。
修改后的完整代码如下:
def far_to_cel(temp): return (temp - 32) * 5 / 9 # 确保输入是整数 while True: try: fahrenheit = int(input("Skriv in temeraturen i fahrenheit i heltal här tack: ")) break except ValueError: print("Du måste fylla i heltal, försök igen") # 转换温度 celcius = far_to_cel(fahrenheit) # 判断温度区间 if celcius < 82: print("Det är tyvärr för kallt att basta") elif celcius > 87: print("Det är tyvärr för varmt för att basta") else: # 温度在82-87之间(包含边界) print(f"Nu är bastun {round(celcius, 1)} grader celcius, nu kan ni basta") input("Tryck Enter för att avsluta")
关键修改说明:
- 去掉多余的
while循环,直接转换温度后用if-elif-else一次性覆盖所有温度情况,逻辑更清晰。 - 用
else分支处理正常温度的场景,无需额外的范围判断。 - 给
except指定了具体的ValueError,避免捕获所有异常(更规范的编程习惯)。 - 修正了变量名拼写错误(
fahrenheite改为fahrenheit)。
这样修改后,程序就能正确处理所有温度区间的提示逻辑。
内容的提问来源于stack exchange,提问作者empa
相关产品推荐
相关产品推荐

