これは最初から小さなPythonプロジェクトです。アイデアは、ユーザーの入力を受け取り、ユーザーの入力によって指定された指定された桁数で "e"を戻すことです。それは間違いなく非Pythonのやり方ですが、外部の支援なしにそれを試して解決することが私の目標でした。ご覧のとおり、私はPython 2.7を使用しています。else文がこれを処理しない理由は何ですか?
euler = 2.71828
digits = raw_input('Please enter the desired digit: ')
digitsError = 'Error: Please enter an integer'
euler_str = str(euler)
私は、非整数入力に対処するために "else"文が必要であると予想しました。しかし、私はエラーメッセージ(ValueError)を受け取りました。
def digitsCheck():
if digits == int:
return digits
else:
return digitsError
digitsCheck()
私はエラーと例外を再検討することを決めたと、私は使用することができます実現「/試みる除く/ついに」など
try:
print('3'+euler_str[1:int(digits)+2])
except ValueError:
print(digitsError)
それはおそらく、ここで非常に単純な問題ですが、私は材料Iを再訪していますPythonを学ぶために使われたもので、問題を特定することはできません。どうもありがとうございます!
編集:上記 エラーメッセージ:
ValueError: invalid literal for int() with base 10:
Iはraw_input(非整数を使用する場合、私はこのメッセージを取得します)。
使用̶'̶t̶y̶p̶e̶(桁)̶̶=̶=̶̶i̶n̶t̶'̶.̶̶'̶i̶n̶t̶'̶自体であるザ・クラスオブジェクト '<クラス̶'̶i̶n̶t̶'̶>̶'̶.̶使用'でisinstance (digits、int) 'を参照してください。@pstatixは以下のように示唆しています。 –
よくあることです:1. 'raw_input'は' str'を返します。 2.あなたは 'digitsCheck()'を呼び出しますが、 'digits'が' global'(そうでない)でなければ、 'digits'が何であるか分かりません。 – pstatix
@KilianBatzner 'type()'を呼び出すのではなく、 'isinstance(digits、int)'を使う方が良いです。 – pstatix