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

如何为FizzBuzz游戏实现计数到21时允许用户输入新规则的函数?

简单版解决方案

这个方案用字典存储规则,逻辑和你原来的代码接近,容易理解,还能轻松添加新规则:

# 初始化规则:键是要匹配的数字,值是对应的输出文本
rules = {3: "Fizz", 5: "Buzz"}
count = 0

# 先计数到21
while count <= 21:
    output = ""
    # 遍历所有规则,符合条件就拼接文本
    for num, text in rules.items():
        if count % num == 0:
            output += text
    # 没匹配到规则就输出数字本身
    print(output if output else count)
    count += 1

# 让用户添加新规则
print("\n现在可以添加新规则啦!")
while True:
    try:
        num = int(input("请输入要匹配的数字(输入0结束添加):"))
        if num == 0:
            break
        text = input(f"请输入数字{num}对应的输出文本:")
        rules[num] = text
        print(f"已添加规则:{num} → {text}")
    except ValueError:
        print("请输入有效的数字哦!")

# 继续计数,直到用户输入q停止
print("\n继续计数,输入'q'停止:")
while True:
    output = ""
    for num, text in rules.items():
        if count % num == 0:
            output += text
    print(output if output else count)
    count += 1
    
    stop = input("按回车继续,输入'q'停止:").lower()
    if stop == 'q':
        break

简单版说明

  • 用字典存规则,添加新规则就是往字典里加键值对,不用改核心的计数逻辑
  • 代码里的注释会帮你理解每一步的作用,适合刚学Python的你上手

进阶版解决方案

如果想让代码更规整、方便后续扩展,可以把功能拆成独立函数,模块化的代码更容易维护和修改:

def get_fizzbuzz_output(count, rules):
    """根据当前计数和规则,返回对应的输出内容"""
    output = ""
    # 按数字从小到大排序规则,保证输出顺序统一(比如先Fizz再Buzz)
    for num in sorted(rules.keys()):
        if count % num == 0:
            output += rules[num]
    return output if output else count

def add_new_rule(rules):
    """让用户添加/修改规则,返回更新后的规则字典"""
    print("\n=== 添加新规则 ===")
    while True:
        try:
            num_input = input("请输入匹配数字(输入0结束):")
            num = int(num_input)
            if num == 0:
                break
            # 如果数字已有规则,询问是否替换
            if num in rules:
                confirm = input(f"数字{num}已有规则'{rules[num]}',是否替换?(y/n):").lower()
                if confirm != 'y':
                    continue
            text = input(f"请输入数字{num}对应的文本:")
            rules[num] = text
            print(f"规则已更新:{num} → {text}")
        except ValueError:
            print(f"输入的'{num_input}'不是有效数字,请重新输入!")
    return rules

def main():
    # 初始配置
    initial_rules = {3: "Fizz", 5: "Buzz"}
    start_count = 0
    first_stop_at = 21
    
    count = start_count
    rules = initial_rules.copy()
    
    # 第一次计数到21
    print(f"=== 计数到{first_stop_at} ===")
    while count <= first_stop_at:
        print(get_fizzbuzz_output(count, rules))
        count += 1
    
    # 添加新规则
    rules = add_new_rule(rules)
    
    # 继续计数直到用户停止
    print("\n=== 继续计数 ===")
    while True:
        print(get_fizzbuzz_output(count, rules))
        count += 1
        
        user_input = input("按回车继续,输入'q'退出:").strip().lower()
        if user_input == 'q':
            print("游戏结束!")
            break

if __name__ == "__main__":
    main()

进阶版说明

  • 把生成输出、添加规则、主逻辑拆成不同函数,每部分只做一件事,逻辑更清晰
  • 支持替换已有规则,还对用户输入做了更友好的错误处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:42:37