新手编程求助:如何编写双分支IF语句?学段判断程序逻辑报错
问题分析与解决方案
一、你的代码为什么总是输出Key Stage 3?
问题出在条件判断的逻辑写法错误上!你写的:
if answer < 7 or 8 or 9:
这行代码的逻辑完全不是你想的那样——or运算符需要连接完整的布尔表达式,而不是单独的数字。这里的8和9本身是“真值”(非零数字在Python里都会被视为True),所以不管answer是什么值,这个条件永远为True,程序自然每次都会走第一个分支。
二、修正后的正确代码
你需要把条件改成判断answer是否在对应的年级范围内,有几种写法都可以:
写法1:用范围比较(最直观)
answer = int(input("What year are you in?")) if 7 <= answer <= 9: print("You are in Key Stage 3") elif 10 <= answer <= 11: print("You are in Key Stage 4") elif 12 <= answer <= 13: print("You are in Key Stage 5") else: print("Invalid year!") # 可以加个非法输入的提示
写法2:用in和range
answer = int(input("What year are you in?")) if answer in range(7, 10): # range(7,10)包含7、8、9 print("You are in Key Stage 3") elif answer in range(10, 12): # range(10,12)包含10、11 print("You are in Key Stage 4") elif answer in range(12, 14): # range(12,14)包含12、13 print("You are in Key Stage 5") else: print("Invalid year!")
写法3:用or连接完整表达式(最基础的布尔逻辑)
answer = int(input("What year are you in?")) if answer == 7 or answer == 8 or answer == 9: print("You are in Key Stage 3") elif answer == 10 or answer == 11: print("You are in Key Stage 4") elif answer == 12 or answer == 13: print("You are in Key Stage 5") else: print("Invalid year!")
三、如何编写包含两种可能性的IF语句?
其实就是用or运算符连接两个(或多个)完整的布尔判断条件,只要其中一个条件为真,整个表达式就为真。举几个例子:
- 判断年龄是否是儿童或青少年:
age = 15 if age < 12 or 12 <= age <= 18: print("你是儿童或青少年") - 判断输入的字符是否是字母a或b:
char = input("输入一个字符:") if char == 'a' or char == 'b': print("你输入了a或b") - 更简洁的方式:如果判断的是“是否在某个集合里”,可以用
in代替多个or,比如上面的例子可以写成:char = input("输入一个字符:") if char in ['a', 'b']: print("你输入了a或b")
内容的提问来源于stack exchange,提问作者RynAl
相关产品推荐
相关产品推荐

