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

猜4位无重复数字游戏报错求助:divmod()不支持NoneType与Int运算

解决猜数字游戏的TypeError问题

嘿,我来帮你搞定这个报错!这个TypeError: unsupported operand type(s) for divmod(): 'NoneType' and 'int'本质是说,你代码里有个地方把None(空值)和整数一起用了divmod运算,而这个None大概率是用户输入重复数字时,你的输入验证逻辑没处理好导致的——比如某个负责处理用户输入的函数在遇到重复数字时,没返回有效的数字,默认返回了None,后续代码拿着这个None去计算,自然就报错了。

核心解决方案:添加完善的输入验证逻辑

你需要确保只有4位无重复的纯数字才能进入后续的猜数字逻辑,不符合条件的输入要让用户重新输入,直到正确为止。给你写个实用的输入验证函数示例:

def get_valid_guess():
    while True:
        guess_input = input("请输入一个4位无重复的数字:")
        # 检查是否是4位长度
        if len(guess_input) != 4:
            print("哎呀,得输入刚好4位数字哦!再试一次~")
            continue
        # 检查是否全是数字
        if not guess_input.isdigit():
            print("只能输入数字哦!别搞其他的~")
            continue
        # 检查是否有重复数字(用集合去重后长度还是4就说明无重复)
        if len(set(guess_input)) != 4:
            print("数字不能重复呀!换一个试试~")
            continue
        # 所有验证通过,转成整数返回
        return int(guess_input)

替换你原来的输入逻辑

在你的主代码里,不要直接用input()的结果,而是调用这个函数获取输入:

# 原来可能是这样(容易出错):
# user_guess = int(input("输入4位数字:"))

# 换成这个:
user_guess = get_valid_guess()
# 之后再用user_guess去做divmod等运算就不会有None的问题了

检查你原有代码的坑

如果你之前写了自己的输入处理函数,比如类似下面这种错误写法:

def process_guess():
    guess = input("输入4位数字:")
    if len(set(guess)) != 4:
        print("数字重复了")
    # 这里没有返回有效数字,默认返回None!

这种情况就会导致后续拿到None去运算,一定要确保函数在验证通过时返回有效数字,不通过时要么循环重试,要么明确提示后终止/重新输入。

这样处理后,用户输入1223这类重复数字时,会被拦截并提示重新输入,不会让无效的输入(或者None)进入后续的运算逻辑,自然就不会触发那个TypeError啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:40:25