0

私はPythonでこのスクリプトを作成しました:

a=raw_input("Enter your Name here:")
b=raw_input("Enter Your Country Name here:")
c=input("Enter Your Phone Number Here:")

--->問題は、123456 のような数字を入力するとエラーは発生しませんが、123456789 または 0682020687 を入力するとエラーが発生することです。

なぜこれが起こるのか、これを解決する方法を誰かが説明できますか?

4

2 に答える 2

8

Python 2.x では、数字をゼロで始めると 8 進数としてマークされます。0 で始まる電話番号が必要な場合は、電話番号も文字列として取得する必要がありますraw_input

c = raw_input("Enter Your Phone Number Here:")

この問題は、8 進数で 8 を使用できないために発生します。したがって、0682020687 はエラーになります。123456789 は問題になりません。

于 2012-12-30T23:14:37.630 に答える
2

あなたの問題は、最後の行のinput代わりに使用していると思います。raw_input

ドキュメントにあるように、これinputにより入力が評価されeval、Faruk Sahin が言うように、これにより数値が 8 進数として評価されますが、そのうち 0682020687 は有効な 8 進数ではありません。参照: http://docs.python.org/2/library/functions.html#input

最後の行を次のように変更します。

c = raw_input("Enter Your Phone Number Here:")

入力を文字列として読み取り、変数に格納しますc。(最初の 2 行で行っているのと同じように)

その文字列を取得したら、int関数を使用して数値に変換できます。

c = int(raw_input("Enter Your Phone Number Here:"))

入力が有効な整数でない場合、キャッチできる例外がスローされます。参照: http://docs.python.org/2/library/functions.html#int

raw_inputまた、Python 3 を使用するように切り替える場合は、すべての関数をPython 2inputと同じように置き換える必要があることに注意してください。http: //docs.python.org/3.0/library/functions を参照してください。 html#入力raw_input

于 2012-12-30T23:17:51.197 に答える