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

FizzBuzz扩展游戏代码问题求助:用户输入验证失效

解决FizzBuzz游戏验证失败的问题

你的代码存在几个关键错误,导致无论输入什么都会触发错误提示,下面逐一说明并给出修正方案:

主要错误点

  • 类型不匹配:input()获取的是字符串类型,直接和整数x比较永远不相等,需要把x转为字符串再对比。
  • FizzBuzz判断逻辑错误:fizzbuzz = (x%3 and x%5 == 0) 是错误的,正确逻辑应为x%3 == 0 and x%5 == 0,且这个判断需要优先于单独的Fizz/Buzz,因为同时满足两个条件的情况要优先匹配。
  • 大小写不统一:代码里判断的是"fizz"、"Fizzbuzz",但用户输入可能是"Fizz"或"FizzBuzz",应该统一将输入转为小写(或大写)避免大小写问题。
  • 验证逻辑颠倒:当前代码没有根据x的实际情况验证输入,而是不管x是什么,只要输入某个值就通过,不符合游戏规则——应该先确定当前x对应的正确输出,再和用户输入对比。

修正后的代码

print("Welcome to FizzBuzz.")
print("Enter a number, Fizz, Buzz or FizzBuzz:")

for x in range(1, 16):
    # 先确定当前数字对应的正确输出
    correct_answer = ""
    if x % 3 == 0:
        correct_answer += "Fizz"
    if x % 5 == 0:
        correct_answer += "Buzz"
    # 如果都不满足,正确答案就是数字本身的字符串
    if not correct_answer:
        correct_answer = str(x)
    
    # 获取用户输入并统一转为小写,避免大小写问题
    user_input = input().strip().lower()
    # 把正确答案也转为小写,和用户输入对比
    if user_input == correct_answer.lower():
        print("Next")
    else:
        print("incorrect, game over")
        break  # 错误后直接结束游戏

代码说明

  1. 先根据x计算对应正确输出:能被3整除加"Fizz",能被5整除加"Buzz",都不满足则用数字的字符串形式。
  2. 将用户输入去除前后空格并转为小写,同时把正确答案也转为小写,确保大小写不影响判断。
  3. 对比输入和正确答案,正确则继续下一个数字,错误则打印提示并终止循环(游戏结束)。

内容的提问来源于stack exchange,提问作者Emma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:20:39