🌞파이썬 121~130문제
#121 ⭕
사용자로부터 문자 한 개를 입력 받고, 소문자일 경우 대문자로, 대문자 일 경우, 소문자로 변경해서 출력하기
user = input('알파벳 소문자 또는 대문자 1개를 입력하세요:')
#풀이1:
if user == user.upper():
print(user.lower())
else: print(user.upper())
#풀이2
if user.islower():
print(user.upper())
else: print(user.lower())
풀이1에서는 user의 입력값이 대문자인지, 소문자인지 직접 비교를 했다면,
풀이2에서는 .islower()의 True, False로 판단해서 출력한다.
#122 ⭕
점수 구간에 해당하는 학점이 아래와 같이 정의되어 있다. 사용자로부터 score를 입력받아 학점을 출력하기
점수 | 학점 |
81-100 | A |
61-80 | B |
41-60 | C |
21-40 | D |
0-2 | E |
>> score: 83
grade is A
:: 풀이:
user = input('점수입력:')
user = int(user)
if user < 21:
print('grade is E')
elif user < 41:
print('grade is D')
elif user < 61:
print('grade is C')
elif user < 81:
print('grade is B')
else: print('grade is A')
123 ⭕
사용자로부터 달러, 엔, 유로, 또는 위안 금액을 입력받은 후 이를 원으로 변환하는 프로그램을 작성하기
각 통화별 환율은 다음과 같다. 사용자는 100 달러, 1000 엔, 13 유로, 100 위안과 같이 금액과 통화명 사이에 공백을 넣어 입력한다고 가정한다.
통화명 | 환율 |
달러 | 1167 |
엔 | 1.096 |
유로 | 1268 |
위안 | 171 |
>> 입력: 100 달러
116700.00 원
:: 풀이1
user = input('환율 계산:')
통화 = user.split(' ')[1]
금액 = int(user.split(' ')[0])
if 통화 == '달러':
print(금액*1167)
elif 통화 == '엔':
print(금액*1.096)
elif 통화 == '유로':
print(금액*1268)
elif 통화 == '위안':
print(금액*171)
else: print('해당사항이 없습니다.')
환율 = {'달러':1167, '엔':1.096, '유로':1268, '위안':171}
user = input('환율계산:')
num, currency = user.split()
print(int(num)*환율[currency], '원')
#124 ❌
사용자로부터 세 개의 숫자를 입력 받은 후 가장 큰 숫자를 출력하라.
>> input number1: 10
>> input number2: 9
>> input number3: 20
20
:: 풀이:
num1 = int(input('첫 번째 숫자 입력:'))
num2 = int(input('두 번째 숫자 입력:'))
num3 = int(input('세 번째 숫자 입력:'))
if num1 > num2 and num1 > num3:
print(num1)
elif num2 > num1 and num2 > num3:
print(num2)
else: print(num3)
#125 ⭕
휴대폰 번호 앞자리에 따라 통신사는 아래와 같이 구분된다. 사용자로부터 휴대전화 번호를 입력 받고, 통신사를 출력하는 프로그램을 작성하기
번호 | 통신사 |
011 | SKT |
016 | KT |
019 | LGU |
010 | 알수없음 |
:: 풀이1: (%formatting 사용)
user = input('휴대전화 번호 입력:')
통신사 = user.split('-')[0]
a = '당신은 %s 사용자입니다'
if 통신사 == '011':
print(a%('SKT'))
elif 통신사 == '016':
print(a%('KT'))
elif 통신사 == '019':
print(a%('LGU'))
else: print(a%('알 수 없습니다.'))
:: 풀이2(f'string 사용)
user = input('휴대전화 번호 입력:')
통신사 = user.split('-')[0]
if 통신사 == '011':
통신사 = 'SKT'
elif 통신사 == '016':
통신사 = 'KT'
elif 통신사 == '019':
통신사 = 'LGU'
else: print('알 수 없습니다.')
print(f'당신은 {통신사}사용자입니다.')
#126 ⭕
우편번호는 5자리로 구성되는데, 앞의 세자리는 구를 나타낸다. 예를들어, 강북구의 경우 010, 011, 012 세 자리로 시작한다.
사용자로 부터 5자리 우편번호를 입력받고 구를 판별하라
>> 우편번호: 01400
도봉구
:: 풀이:
user = input('우편번호:')
구 = int(user[2])
if 구 < 4:
print('강북구')
elif 구 < 6:
print('도봉구')
else: print('노원구')
127 ⭕
주민등록번호 뒷 자리 7자리 중 첫째 자리는 성별을 나타내는데, 1, 3은 남자 2, 4는 여자를 의미한다. 사용자로부터 13자리의 주민등록번호를 입력 받은 후 성별 (남자, 여자)를 출력하는 프로그램을 작성하기
>> 주민등록번호: 821010-1635210
남자
:: 풀이:
user = input('주민등록번호:')
성별 = int(user.split('-')[1])
if 성별%2 != 0 and 0<성별<4:
print('남자입니다.')
elif 성별%2 == 0 and 0<성별<5:
print('여자입니다.')
else: print('다시 확인해주세요.')
예외처리로 0또는 5이상의 수를 입력했을 때 출력값을 다르게 주었다.
128 ⭕
주민등록번호의 뒷 자리 7자리 중 두번째와 세번째는 지역코드를 의미한다. 주민 등록 번호를 입력 받은 후 출생지가 서울인지 아닌지 판단하는 코드를 작성하라
>> 주민등록번호: 821010-1635210
서울이 아닙니다.
>> 주민등록번호: 861010-1015210
서울 입니다.
:: 풀이:
user = input('주민등록번호:')
지역 = user.split('-')[1]
지역 = int(지역[1:3])
if 0 <= 지역 <= 8:
print('서울입니다.')
else: print('서울이 아닙니다.')
129 / 문제보류
주민등록번호는 13자리로 구성되는데 마지막 자리수는 주민등록번호의 유효성을 체크하는데 사용된다. 먼저 앞에서부터 12자리의 숫자에 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5를 차례로 곱한 뒤 그 값을 전부 더한다. 연산 결과 값을 11로 나누면 나머지가 나오는데 11에서 나머지를 뺀 값이 주민등록번호의 마지막 번호가 된다.
8 2 1 0 1 0 - 1 6 3 5 2 1 0
x 2 3 4 5 6 7 8 9 2 3 4 5
-----------------------------
1차 계산: (8*2 + 2*3 + 1*4 + 0*5 + 1*6 + 0*7 + 1*8 + 6*9 + 3*2 + 5*3 + 2*4 + 1*5) = (128 % 11) = 7
2차 계산: 11 -7 = 4
위와 같이 821010-1635210에 대해서 계산을 해보면 마지막 자리는 4가 되어야 함을 알 수 있다. 즉, 821010-1635210은 유효하지 않은 주민등록번호임을 알 수 있다.
다음과 같이 사용자로부터 주민등록번호를 입력받은 후 주민등록번호가 유효한지를 출력하는 프로그램을 작성하라.
>> 주민등록번호: 821010-1635210
유효하지 않은 주민등록번호입니다.
'💻 개발블로그 > 파이썬 300제 문제' 카테고리의 다른 글
파이썬300제: 파이썬 분기문 111~120(20220125) (0) | 2022.01.25 |
---|---|
파이썬300제: 파이썬 분기문 101~110(20220125) (0) | 2022.01.25 |
파이썬300제: 파이썬 딕셔너리 091~100(20220124) (0) | 2022.01.25 |
파이썬300제: 파이썬 딕셔너리 081~090(20220124) (0) | 2022.01.25 |
파이썬300제: 파이썬 튜플 071~080(20220124) (0) | 2022.01.25 |