Python中while循环内的if-else语句无法正常运行,如何解决?
搞定你的Python循环与判断问题啦!
嘿,我仔细看了你的代码,发现几个关键问题导致if-else没法正常工作,咱们一个个理清楚:
1. 奇偶判断逻辑完全搞反了
你这段判断代码写反啦:
if counter % 2 != 0: print("This number is even") else: print("This number is odd")
counter % 2 != 0 意味着这个数除以2有余数,也就是奇数,结果你打印了“这是偶数”;反过来,余数为0的时候是偶数,你却标成了奇数,这就导致判断完全颠倒啦。
2. while循环的执行顺序有点小问题
你把counter += 1放在了判断语句前面,这会导致你打印的数字和判断的数字不是同一个(比如你先把counter加1,再判断,判断的是加之后的数)。最好把自增操作放在判断之后,确保逻辑一致。
3. 有些代码根本没用到,纯属冗余
你定义了numbers列表和NumberOfElements变量,但整个程序里完全没调用它们,留着只会让代码变乱,直接删掉就行。
修复后的完整代码
print("Christian Dooley") print("Lab #5") def calculation(): counter = 0 sum_total = 0 # 尽量别用sum当变量名,它是Python内置函数 # 直接获取用户输入的整数,别用eval,风险高 try: value = int(input("Enter a new number:")) except ValueError: print("请输入有效的整数哦!") return while counter <= value: print(counter) sum_total += counter # 修正后的奇偶判断 if counter % 2 == 0: print("This number is even") else: print("This number is odd") counter += 1 # 放在最后,确保判断的是当前打印的数字 print(f"累加总和: {sum_total}") while True: calculation() # 补全重复运行的逻辑 repeat = input("要不要再算一次?(输入y继续,其他退出): ") if repeat.lower() != 'y': break
额外的小优化
- 别用
eval()处理用户输入!它会执行用户输入的任何代码,非常不安全,用int()转成整数就好,我还加了异常处理,防止用户输入非数字内容。 - 避免用Python内置函数名(比如
sum)当变量名,容易引发奇怪的bug,我改成了sum_total。
内容的提问来源于stack exchange,提问作者Christian Dooley
相关产品推荐
相关产品推荐

