def input():
h = eval(input("Enter hours worked: \n"))
return h
def main():
hours = input()
print(hours)
main()
如您所知,我是 Python 新手。我不断收到:“TypeError:input() 正好需要 1 个参数(给定 0)。” 任何帮助/解释将不胜感激 - 非常感谢大家!
您定义了一个input
在第一行调用的函数,该函数接受零参数,然后当您input
稍后调用该函数时(我假设您打算调用 Python 附带的函数并且可能不小心覆盖了该函数),您将传递一个变量。
# don't try to override the buil-in function
def input_custom():
h = eval(input("Enter hours worked: \n"))
return h
def main():
hours = input_custom()
print(hours)
main()
input()
是内置 Python 函数的名称。
在您的代码中,您覆盖它,这绝对不是一个好主意。尝试将您的函数命名为其他名称:
def get_hours():
h = eval(input("Enter hours worked: \n"))
return h
def main():
hours = get_hours()
print(hours)
main()
使用不同的名称更改输入函数,因为输入是 python 中的一种方法。
def inputx():
h = eval(input("Enter hours worked: \n"))
return h
def main():
hours = inputx()
print(hours)
main()
我无法复制您的确切错误-相反,我得到:
TypeError: input() takes no arguments (1 given)
但是,您的错误很可能是由同一件事引起的 - 当您命名您的函数时input
,您会隐藏内置input
:Python 无法同时看到两者,即使您不希望出现提示。如果您myinput
改用自己的名称,Python 可以区分:
def myinput():
h = eval(input("Enter hours worked: \n"))
return h
def main():
hours = myinput()
print(hours)
main()
其他答案涵盖了很多..我只想添加一些想法。首先,您的函数名称输入覆盖了 python 内置函数
所以首先
def my_input():
return input("Enter hours worked: ")
print my_input()
这应该足够了。
概念:
现在,如果您使用的是Python 2.X版本,则不需要 eval。
input():如果输入表达式被 python 识别,Python 默认会评估输入表达式。
raw_input():这里的输入被视为需要评估的字符串。
在Python3.x 的情况下:
input()的行为类似于raw_input()并且raw_input()被删除。
所以你的代码应该是
def my_input():
return float(input("Enter hours worked: "))
print(my_input())
这是一种更安全、更好的输入方式,也告诉我们为什么不推荐使用 eval。
你不知道什么会从那扇门进来。
谢谢你。