Python函数内使用int(input())出现TypeError报错问题求助
解决TypeError: int() takes 0 positional arguments but 1 was given的问题
这个错误的核心原因很简单:你当前的Python环境里,内置的int()函数被意外覆盖了。
你的代码本身是没有语法问题的——我在干净的Python环境里测试了这段代码,输入合法的年龄和名字完全能正常运行。那为什么在你的函数里会报错呢?
大概率是你在运行这段函数之前,不小心在同一个环境里做了类似下面的操作:
- 把
int赋值成了一个变量,比如int = 10 - 或者自己定义了一个叫
int的无参函数,比如:def int(): return 0
这两种操作都会把Python原本用来做类型转换的内置int给覆盖掉。当你在函数里调用int(input(...))时,实际调用的是你自己定义的那个无参的int(或者是一个非函数的对象),自然就会抛出"不需要参数但传入了一个"的错误。而函数外之前能正常运行,可能是因为你覆盖int的操作是在定义函数之后执行的,或是之前的测试环境是干净的,后来不小心污染了环境。
解决方法:
- 如果是在Python交互环境(比如命令行的
>>>模式)里遇到这个问题,直接重启Python解释器就行,重启后内置的int函数会恢复正常。 - 如果是在脚本文件里,仔细检查整个脚本,找到所有把
int当成变量名或者自定义函数名的地方,把名字改掉(比如换成my_int、custom_int这类不会和内置名称冲突的名字)。
验证一下
在干净的环境里运行你的代码:
def ea(): x,y = int(input("enter age:")),input("enter name:") if x > 0: print(f"My name is {y} and I am {365*(x)} on earth") else: ea() ea()
输入20和Alice,会输出:
My name is Alice and I am 7300 on earth
完全正常运行。
内容的提问来源于stack exchange,提问作者Georgie Baul
相关产品推荐
相关产品推荐

