私は学生です。私は3桁の数字を入力したかどうかをチェックするユーザー入力を検証しようとしていますが、2桁の数字しか入力できません。プログラムは、ユーザーが2桁だけを入力したときにうまく動作しますが、3桁以上入力すると、作成したエラーメッセージが表示され、2桁の数字を再入力するように求められます。 number pythonは私にTypeErrorを与えます。私が得ている完全なエラーは次のとおりです。Python TypeError:int()引数は文字列、バイトのようなオブジェクトまたは数値で、 'NoneType'でなければなりません。
Traceback (most recent call last):
File "/Users/admin/Desktop/week6/question_7.py", line 87, in <module>
File "/Users/admin/Desktop/week6/question_7.py", line 79, in do_stuff
print (display_grade(user_in))
TypeError: int() argument must be a string, a bytes-like object or a
number, not 'NoneType'
なぜこれを行うのかわかりません。私はそれがget_input()関数を呼び出して何かを持っていると感じていますか?私はこれを避ける方法を理解することはできません。
私はエラーが発生したので、何か助けてもらえませんでした。
ここはプログラムですが、かなりシンプルです。
NUMBER_OF_TESTS = 5
def get_input():
print ('enter a test score below')
user_in = input()
if len(user_in) > 2:
print ('error, you can only enter a 2 digit number.')
get_input()
else:
return user_in
def display_grade (letter_grade):
if letter_grade >= 89:
return ('You got an A!')
elif letter_grade >= 80 and letter_grade <= 89:
return ('You got a B!')
elif letter_grade >= 70 and letter_grade <= 79:
return ('You got a C')
elif letter_grade >= 61 and letter_grade <= 69:
return ('You got a D')
else:
return ('You got an F')
def calAverage(total):
average_score = (total)/NUMBER_OF_TESTS
return int(average_score)
def do_stuff():
i = 0
x = 0
while i < NUMBER_OF_TESTS:
user_in = int(get_input())
print (display_grade(user_in))
x = x + user_in
i = i + 1
print ('your average score is' , calAverage(x) , 'which means' , display_grade(calAverage(x)))
do_stuff()
これは完璧なおかげです。 100を含む次のステップは、私はlen(user_input)> 2やuser_input == 100のようなやり方をする予定だった。再度、感謝します。 –