You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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摄氏度范围时打印提示信息的功能。


解决方案

你的代码主要有两个核心问题:

  1. 第二个while循环逻辑错误:当温度在82-87之间时,循环条件celcius<82 or celcius>87不成立,循环直接跳过,根本不会触发正常温度的提示。
  2. 尝试代码中用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:53:21