4桁の文字列を読み込み、実際に4桁であることを確認し、桁がないことを確認する簡単なプログラムを作成しようとしていますその後、最初の2桁を最後の2桁から分離して一緒に追加します。私はすべての作業を行うことができますが、私はまだ、このエラーを得た:私はこのような「456f」として文字列をしようとすると、ValueError:int()のリテラルが無効で、数字の桁が10でない場合
ValueError: invalid literal for int() with base 10:
にのみ発生します。
これを修正するために何が変更できますか?
コード:あなたはすべての文字が数字であるかどうかをチェックされますが、このチェックは何も影響を与えません
s = input('please type a 4-digit integer \n')
valid = True
for c in s:
if len(s)!= 4:
valid = False
if not c.isdigit():
print (c, 'is not a valid input')
number = int(s)
firstOne = number // 100
secondOne = number % 100
sum = firstOne + secondOne
x = '/'
if valid == True:
print('your integer is ' + str(number), x, 'first two digits are ' + str(firstOne), x, 'second two digits are ' + str(secondOne), x, 'sum of two new numbers is ' + str(sum))
else:
print(len(s), 'is an invalid amount of digits')
これは非常に役に立ちました!どうもありがとうございました。あなたのソリューションは間違いなく最も単純なようですが、有効なコードと論理的なロジックをコード内に維持してエラーメッセージを回避する方法はありますか? – dustdustdust
@dustdustdust:あなたがこの回答が最も役に立つものだと思うなら(私はそれがだと思いますが)、それを受け入れることを検討してください。 –
@dustdustdust確かに。私は本当にそれを綴るために答えを更新しました。しかし、私はこれが悪い解決策であると十分にストレスを感じることはできません。この質問がすべて存在するという事実は、 'if'に基づくエラー処理の問題を示しています。 –