私はPythonを学んでいて、プロジェクトに固執しています。このプロジェクトの主な部分は、問題ではないcollatzシーケンスをコード化することでした。次の部分は作るために、試してみると以外を使用してユーザー入力を検証することであることを確認だけ整数値がで与えられる これまでのところ、私は、次のコードを持っている:。Python:条件が満たされるまでtry/except文を繰り返してください。
def collatz(number):
if number % 2 == 0:
return number // 2
elif number % 2 == 1:
return (3*number) + 1
print('Please enter a number:')
number = ''
try:
number = int(input())
except ValueError:
print('Incorrect type of data entered.\nPlease enter an integer!')
while number is not int:
try:
number = int(input())
except ValueError:
print('Incorrect type of data entered.\nPlease enter an integer!')
output = number
while output != 1:
output = collatz(output)
print(output)
私の問題は、私はあるに私はユーザーから整数を取得するまでtry/except文を繰り返す方法がわかりません。今のところ、整数の代わりに文字列を入力すると、プログラムはループに入り、その後整数を入力することは役に立ちません。私はその話題についてかなりのスレッドを読んでいましたが、上記の問題については明らかにしていませんでした。
どこが間違っているのか本当に分かりますか?
指定された数値が整数の場合は、3回だけチェックしても問題ありません。 'isinstance'関数で型をチェックすることができます – user1767754
'数値はintではありません 'は真実になることはありません。 'type(number)is int'は動作しませんが、not isinstance(number、int)'を使う方が良いでしょう。さらに良いことに、 'trueの間は'を使い、 '例外が発生しないときは'中断する 'だけです。 –
あなたはもちろんそうです。それは私の部分で非常にばかげたミスだった、私はタイプ()に逃した。 私はチェックアウトされますinstance(number、int) - 私は機能を認識していません。しかし、ヒントのために多くのおかげで!非常に高く評価。 – sar91