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 に付属していて誤ってオーバーライドされた可能性がある関数を呼び出すつもりだったと思います)、1 つの変数を渡します。
# 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)
しかし、あなたのエラーは同じことが原因である可能性があります. functioninput
に名前を付けると、組み込みのinput
. 代わりに自分の名前を付ける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 が推奨されない理由も教えてくれます。
そのドアから何が来るかわかりません。
ありがとうございました。