Python自定义input函数报takes 0 positional arguments错误如何解决?
错误原因
你自定义的函数使用了input作为名称,直接覆盖了Python内置的input()函数。当你在自定义函数内部执行input("Enter your number in to list = ")时,实际调用的是你写的无参自定义input,传入的字符串参数和函数定义的参数规则不符,因此触发TypeError: method() takes 0 positional arguments but 1 was given报错。
修复方案
- 给自定义函数重命名,避免和内置函数重名,比如改为
get_input_number - 同步修改末尾的函数调用语句即可
修复后的完整代码如下:
list_number = list() def get_input_number(): while True: try: number = input("Enter your number in to list = ") if number == "Quit": break number = int(number) list_number.append(number) print(list_number) except ValueError as e: print(e) def diagram(): display = "" for i in list_number: for j in range(i): display = display +"@" print(display) display = "" get_input_number() diagram()
注意事项
不要使用Python内置的函数名、关键字作为自定义变量、函数的命名,否则会覆盖原有内置功能,触发各类意料之外的错误。
内容的提问来源于stack exchange,提问作者khang khang
相关产品推荐
相关产品推荐

