如何用if语句实现基于1-10情绪值的三区间分支逻辑?
修复积极话语生成器的分支逻辑问题
你的代码主要有两个问题导致区间分支失效:
- 未将用户输入的情绪值存储为变量,
if条件中直接调用input()会导致每次判断都重新请求输入,且后续分支无法复用该值; elif的条件写法完全错误,input == _ in range(4,7)不符合Python语法,同时range(4,7)仅包含4、5、6,没有覆盖需求中的7分区间。
以下是修复后的完整代码:
import random # 按情绪区间归类积极语句,更易维护 LOW_MOOD_PHRASES = [ "Remember, coding takes practice. You're doing great!", "You matter.", "Mental health is as important as physical health." ] MEDIUM_MOOD_PHRASES = [ "It's okay to take a break every once in awhile.", "Take a nap, you deserve it!" ] HIGH_MOOD_PHRASES = [ "You're looking great today!", "Good luck today!" ] def greet(): name = input("What is your name? ") print(f"Hello, {name.title()}") def main(): print("""Positivity Generator ---------------------""") greet() # 保存情绪值为变量,避免重复输入 try: mood = int(input("What's your mood on a scale of 1-10? ")) # 处理超出1-10范围的输入 if not 1 <= mood <=10: print("Please enter a number between 1 and 10!") return # 正确的区间分支逻辑 if mood <= 3: print(random.choice(LOW_MOOD_PHRASES)) elif 4 <= mood <=7: print(random.choice(MEDIUM_MOOD_PHRASES)) else: # 匹配>=8的高情绪区间 print(random.choice(HIGH_MOOD_PHRASES)) except ValueError: print("Please enter a valid number!") if __name__ == "__main__": main()
关键修改说明:
- 将不同区间的语句归类为列表变量,代码结构更清晰,后续新增语句更方便;
- 将用户输入的情绪值存储为
mood变量,确保所有分支使用同一个输入值; - 修正区间判断逻辑:用
4 <= mood <=7直接明确覆盖4到7的范围,比range写法更直观; - 增加输入合法性校验,处理非数字或超出1-10范围的情况,提升程序健壮性。
内容的提问来源于stack exchange,提问作者GTAG
相关产品推荐
相关产品推荐

