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

编写奇偶及4倍数校验器时触发TypeError,请求错误原因分析

问题分析与解决:TypeError: not all arguments converted during string formatting

错误根源

你触发这个TypeError的核心原因是:num是input()获取的字符串类型,Python中字符串的%是字符串格式化操作符,不是数学取模运算。

比如输入5时,num的值是字符串"5",执行num % 2时,Python会把它当成字符串格式化尝试——相当于执行"%s" % 2,但原字符串里没有对应的占位符,因此抛出"not all arguments converted during string formatting"错误。

你代码里虽然把num转成了整数val,但后续判断全程用的还是原始字符串num,完全没用到转换后的val,这才是问题的关键。

修正后的代码

num = input("number:")
try:
    val = int(num)
    if val % 4 == 0:
        print("this number is even and divisible by 4!")
    elif val % 2 == 0:
        print("this number is even")
    else:
        print("this number is odd")
except ValueError:
    print("bro just put a number")

修正说明

  • 所有取模运算都使用转换后的整数val,而非原始字符串num
  • 移除了判断4的倍数时冗余的偶数检查(能被4整除的数必然是偶数,无需额外判断)
  • 清理了input语句里多余的括号和重复引号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 07:54:18