두 가지 예외를 제기해야하는 클래스 할당 작업을하고 있습니다. 첫 번째 예외 : 사용자 입력이 0보다 작거나 100보다 큰 경우 예외를 발생시키고 처리해야합니다. 그러면 코드에서 사용자에게 다시 숫자를 묻습니다.파이썬 코드가 try/except 절을 건너 뜁니다.
두 번째 예외 : 특정 파일을 찾을 수없는 경우 예외가 파일 이름을 요청한 후 다시 검색합니다.
두 경우 모두 예외를 발생시킬 수 없습니다. 즉, 첫 번째 예외에서 100보다 작거나 0보다 작은 숫자를 입력하면 프로그램이 계속 진행되고이 항목에 대해 아무 것도 기록하지 않습니다. 사용자의 항목을 인쇄하면 except 절이 표시해야하는 오류 메시지가 아니라 "none"이됩니다. 마찬가지로 두 번째 예외에서 파일을 찾을 수없는 경우 코드는 예외를 발생시키기보다는 단순히 실행을 중지합니다.
수동으로 예외를 발생 시키려고 시도했지만 (이 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()
두 번째 예외 : 첫 번째 하나
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'는 여전히 파이썬 3의 OSError와 동의어로 존재합니다. – tdelaney
고마워요. 제 텍스트 북은 입출력을 사용합니다. 그러나 나는 더 자주 사용되는 용어를 사용하고 싶습니다. – momExMachina
Shady Atef,이 코드를 구현할 때 오류 메시지와 새 번호 요청을 수신합니다. 그러나 이전 코드에서와 똑같은 일이 발생합니다 : 새 번호가 반환되지 않고 인쇄되면 "none"으로 표시됩니다. – momExMachina