while True: answer=int(input("학점을 계산하시겠습니까? (0종료/1계속): "))
if answer==1: your_score=input('당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요): ') if (type(your_score) is str): print("bad score") print("올바르지 않은 숫자입니다. 재입력하여 주세요.") continue
else: # 예외 처리: 입력값이 정수가 아닌 경우 다시 입력 #user_string=input() #이자리에 #if not user_string,isnumeric(): #print(user_string, '은 정수가 아닙니다. ') #continue 이건 while의 본문시작지점에서 재반복시켜요 근데 이건 안배웠다고하니..
else: print("함수계산기를 종료합니다.") break 출력(말씀하신 코드를 def바로 아래에 붙였습니다) /Users/woojinson/PycharmProjects/림시/venv/bin/python /Users/woojinson/PycharmProjects/림시/림시.py 학점계산기를 실행합니다. 학점을 계산하시겠습니까? (0종료/1계속): 1 당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요): 123 bad score 올바르지 않은 숫자입니다. 재입력하여 주세요. 학점을 계산하시겠습니까? (0종료/1계속): 1 당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요):
이렇게 나오는데 score = float(score) 를 어이다 붙여야지 123은 숫자로인식하고 per같은 문자는 문자열로 인식해서 bad score로 뜨게하나요?
+0
2020년 6월 10일
함수 내의 bad score 는 활용할 수 없을 것 같습니다. 첫 if 문에 continue 가 있는데, 이 코드가 문자열을 필터링하려고 작성하신게 아닌가용?
+0
2020년 6월 10일
함수내의 bad score은 1.0~0의 범위를 벗어난 숫자를 입력할때 쓰게 할려고 하고, 말씀하신것처럼 if 첫문에 문자열필터링을 하고싶은데 코드를 대체 어떻게 짜야할지 모르겠습니다...
+0
2020년 6월 10일
위 코드처럼 하시면 되지 않나용? 함수내에 score = float(score) 를 썼을 때 무엇이 예상과 다 르신건가요??
+0
2020년 6월 10일
score=float(score)을 def바로 밑에 붙이고 첫if로 문자열 필터링을 할라해도 아래와 같은 출력이 나옵니다.
+0
2020년 6월 10일
/Users/woojinson/PycharmProjects/림시/venv/bin/python /Users/woojinson/PycharmProjects/림시/림시.py 학점계산기를 실행합니다. 학점을 계산하시겠습니까? (0종료/1계속): 1 당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요): 123 bad score 올바르지 않은 숫자입니다. 재입력하여 주세요. 학점을 계산하시겠습니까? (0종료/1계속): per Traceback (most recent call last): File "/Users/woojinson/PycharmProjects/림시/림시.py", line 3, in answer=int(input("학점을 계산하시겠습니까? (0종료/1계속): ")) ValueError: invalid literal for int() with base 10: 'per'
Process finished with exit code 1
+0
2020년 6월 10일
per이라는 문자열을 입력하면 오류가 발생하더라구요 per이든 뭐든간의 문자열그자체를 입력하면 str로 인식해서 bad score을 출력시키고 싶은데..
즉 1.0~0.0의 범위밖을 벗어난숫자 or per 같은 임의의 숫자가아닌 문자열을 맨첨에 입력하면 bad score이라고 출력되게 만들고 싶습니다!
+0
2020년 6월 10일
제가 테스트를 문자로만 했었군용. 결국 지금 input 은 뭘 입력하든 문자로 받기 때문에, 이 문자가 숫자인 문자인지, 그냥 알파벳인지 구분이 필요하게 됩니당. 그런데 배운 것만으로는 이게 불가능합니다. 그래서 주석에도 있는데 isnumeric 등과 같은 메서드를 쓸 수 밖에 없을 것 같아용
+0
2020년 6월 10일
isdigit이나 isnumeric은 쓰려면 어디다 써야하나요?
+0
2020년 6월 10일
print("학점계산기를 실행합니다.") answer=int(input("학점을 계산하시겠습니까? (0종료/1계속): ")) if answer == 1: while True: your_score = input('당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요): ') if your_score.isdigit()==False: print("bad score") print("올바르지 않은 숫자입니다. 재입력하여 주세요.") continue
else: # 예외 처리: 입력값이 정수가 아닌 경우 다시 입력 # user_string=input() # 이자리에 # if not user_string,isnumeric(): # print(user_string, '은 정수가 아닙니다. ') # continue 이건 while의 본문시작지점에서 재반복시켜요 근데 이건 안배웠다고하니..
학점계산기를 실행합니다. 학점을 계산하시겠습니까? (0종료/1계속): 1 당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요): 123 학점계산을 실행합니다 =============== bad score =============== 당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요): 1 학점계산을 실행합니다 =============== A =============== 당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요): per bad score 올바르지 않은 숫자입니다. 재입력하여 주세요. 당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요):
댓글 12개
answer=int(input("학점을 계산하시겠습니까? (0종료/1계속): "))
if answer==1:
your_score=input('당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요): ')
if (type(your_score) is str):
print("bad score")
print("올바르지 않은 숫자입니다. 재입력하여 주세요.")
continue
else:
# 예외 처리: 입력값이 정수가 아닌 경우 다시 입력
#user_string=input()
#이자리에
#if not user_string,isnumeric():
#print(user_string, '은 정수가 아닙니다. ')
#continue 이건 while의 본문시작지점에서 재반복시켜요 근데 이건 안배웠다고하니..
def score_jumsu(score):
score = float(score)
grade = None
if (1.0>=score >= 0.9):
grade='A'
elif (0.9>score >= 0.8):
grade='B'
elif (0.8>score >= 0.7):
grade='C'
elif (0.7>score >= 0.6):
grade='D'
elif (0.6>score>=0.0):
grade='F'
else:
grade = 'bad score'
print(grade)
print("학점계산을 실행합니다")
print("===============")
score = score_jumsu(your_score)
print("===============")
else:
print("함수계산기를 종료합니다.")
break
출력(말씀하신 코드를 def바로 아래에 붙였습니다)
/Users/woojinson/PycharmProjects/림시/venv/bin/python /Users/woojinson/PycharmProjects/림시/림시.py
학점계산기를 실행합니다.
학점을 계산하시겠습니까? (0종료/1계속): 1
당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요): 123
bad score
올바르지 않은 숫자입니다. 재입력하여 주세요.
학점을 계산하시겠습니까? (0종료/1계속): 1
당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요):
이렇게 나오는데 score = float(score) 를 어이다 붙여야지 123은 숫자로인식하고 per같은 문자는 문자열로 인식해서 bad score로 뜨게하나요?
코드를 대체 어떻게 짜야할지 모르겠습니다...
학점계산기를 실행합니다.
학점을 계산하시겠습니까? (0종료/1계속): 1
당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요): 123
bad score
올바르지 않은 숫자입니다. 재입력하여 주세요.
학점을 계산하시겠습니까? (0종료/1계속): per
Traceback (most recent call last):
File "/Users/woojinson/PycharmProjects/림시/림시.py", line 3, in
answer=int(input("학점을 계산하시겠습니까? (0종료/1계속): "))
ValueError: invalid literal for int() with base 10: 'per'
Process finished with exit code 1
per이든 뭐든간의 문자열그자체를 입력하면 str로 인식해서 bad score을 출력시키고 싶은데..
즉 1.0~0.0의 범위밖을 벗어난숫자 or per 같은 임의의 숫자가아닌 문자열을 맨첨에 입력하면
bad score이라고 출력되게 만들고 싶습니다!
answer=int(input("학점을 계산하시겠습니까? (0종료/1계속): "))
if answer == 1:
while True:
your_score = input('당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요): ')
if your_score.isdigit()==False:
print("bad score")
print("올바르지 않은 숫자입니다. 재입력하여 주세요.")
continue
else:
# 예외 처리: 입력값이 정수가 아닌 경우 다시 입력
# user_string=input()
# 이자리에
# if not user_string,isnumeric():
# print(user_string, '은 정수가 아닙니다. ')
# continue 이건 while의 본문시작지점에서 재반복시켜요 근데 이건 안배웠다고하니..
def score_jumsu(score):
score=float(score)
grade = 0
if (1.0 >= score >= 0.9):
grade = 'A'
elif (0.9 > score >= 0.8):
grade = 'B'
elif (0.8 > score >= 0.7):
grade = 'C'
elif (0.7 > score >= 0.6):
grade = 'D'
elif (0.6 > score >= 0.0):
grade = 'F'
else:
grade = 'bad score'
print(grade)
print("학점계산을 실행합니다")
print("===============")
score = score_jumsu(your_score)
print("===============")
else:
print("함수계산기를 종료합니다.")
이렇게하니까 출력정상됩니다
어쩔수없이 isdigit을 썼네요 ㅠ
출력
학점계산기를 실행합니다.
학점을 계산하시겠습니까? (0종료/1계속): 1
당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요): 123
학점계산을 실행합니다
===============
bad score
===============
당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요): 1
학점계산을 실행합니다
===============
A
===============
당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요): per
bad score
올바르지 않은 숫자입니다. 재입력하여 주세요.
당신의 성적을 입력하세요 (소수점 단위 또는 정수를 입력해주세요):