def input():
h = eval(input("Enter hours worked: \n"))
return h
def main():
hours = input()
print(hours)
main()
正如你所看到的,我是Python新手。我一直得到:“TypeError:input()只需要1个参数(给出0)。”任何帮助/解释将不胜感激 - 非常感谢你!Python函数内返回eval值?
def input():
h = eval(input("Enter hours worked: \n"))
return h
def main():
hours = input()
print(hours)
main()
正如你所看到的,我是Python新手。我一直得到:“TypeError:input()只需要1个参数(给出0)。”任何帮助/解释将不胜感激 - 非常感谢你!Python函数内返回eval值?
input()
是内建Python函数的名称。
在你的代码中,你重载它,这绝对不是一个好主意。尝试命名你的函数别的东西:
def get_hours():
h = eval(input("Enter hours worked: \n"))
return h
def main():
hours = get_hours()
print(hours)
main()
这取决于Python版本,但OP似乎使用print作为函数,这意味着Py3。但是,更重要的是,这并不能解释OP获得的特定错误。 – lvc
当你以后调用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()
因为输入是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
,你的影子内置-in input
:尽管你不期望提示,但Python无法看到两者。如果你的名字你myinput
相反,Python可以看出其中的差别:
def myinput():
h = eval(input("Enter hours worked: \n"))
return h
def main():
hours = myinput()
print(hours)
main()
其他答案已经覆盖了很多。我只是想增加一些想法吧。所有的函数名输入 首先是所以首先
def my_input():
return input("Enter hours worked: ")
print my_input()
这应该足以覆盖蟒蛇内置函数
。
理念:
现在,如果你正在使用Python的2.X版本那么就没有必要EVAL。
input():默认情况下Python会评估输入表达式,如果它被python识别的话。
的raw_input():这里,输入取为需要被评估的字符串。
在Python3.x的情况下:
输入()行为就像的raw_input()和的raw_input()被除去。
所以,你的代码应该是
def my_input():
return float(input("Enter hours worked: "))
print(my_input())
它是更安全,更好的方式来获取输入,并还告诉我们,为什么不建议EVAL。
You don't know what's gonna come through that door.
谢谢。
输入是一个Python中的方法,它需要1个参数。尝试为你的函数使用另一个名字'def input()' – Bob
谢谢islandmyth - 就是这样。我重命名了这个函数,一切都很好。 – user1429845
不客气。欢迎来到stackoverflow – Bob