私は2つの例外を発生させる必要があるクラス割り当てに取り組んでいます。 最初の例外:ユーザーの入力が0より小さいか100より大きい場合、例外を発生させて処理することになっています。このコードは、ユーザーに再度数字を尋ねる必要があります。Pythonコードがtry/except節をスキップします
2番目の例外:特定のファイルが見つからない場合、例外はファイル名を要求してから、再度検索が行われます。
どちらの場合でも、例外を発生させることはできません。言い換えれば、最初の例外を除いて、100桁以上0桁未満の数字を入力すると、プログラムは続行され、このエントリには何も記録されません。ユーザーのエントリを表示すると、except節に表示されるエラーメッセージではなく、 "none"と表示されます。同様に、2番目の例外では、ファイルが見つからない場合、コードは単に例外を発生させるのではなく実行を停止します。
私は手動で例外を発生させようとしましたが(このquestion/answerのように)、私は望んでいないトレースバックを作成します。エラーメッセージを出力し、関数を入力して呼び出します。
まず例外:
def grade():
#input student's average grade
avgGrade = int(input("Enter average grade: "))
try:
if avgGrade > 0 and avgGrade < 100:
return avgGrade
except ValueError:
print("Grade must be numeric digit between 0 and 100")
grade()
2番目の例外:
def displayGrades(allStudents):
try:
#open file for input
grade_file = open(allStudents, "r")
#read file contents
fileContents = grade_file.read()
#display file contents
print(fileContents)
grade_file.close()
except IOError:
print("File not found.")
allStudents = input("Please enter correct file name: ")
displayGrades(allStudents)
インデントを修正できますか?また、 'IOError'はPython 3の' OSError'の同義語としてまだ存在しています。 – tdelaney
私のテキストブックはIOを使用してくれてありがとうが、もっと一般的な言葉を使っています。 – momExMachina
Shady Atef、このコードを実装すると、エラーメッセージと新しい番号の要求が表示されます。しかし、前のコードと同じことが起こります。新しい番号は返されず、印刷されると「なし」と表示されます。 – momExMachina