티스토리 뷰

121

📖question

사용자로부터 문자 한 개를 입력 받고, 소문자일 경우 대문자로, 대문자 일 경우, 소문자로 변경해서 출력하라.

>> a
A

힌트-1 : islower() 함수는 문자의 소문자 여부를 판별합니다. 만약 소문자일 경우 True, 대문자일 경우 False를 반환합니다.

힌트-2 : upper() 함수는 대문자로, lower() 함수는 소문자로 변경합니다.

 

✍️answer

입력한 수를 저장한 변수의 소문자 여부를 판별하여 upper, lower 메서드를 사용해서 바꿔준다.

ch = input()
if(ch.islower() == True):
    print(ch.upper())
else:
    print(ch.lower())

 

122

📖question

점수 구간에 해당하는 학점이 아래와 같이 정의되어 있다. 사용자로부터 score를 입력받아 학점을 출력하라.

점수 학점
81~100 A
61~80 B
41~60 C
21~40 D
0~20 E
>> score: 83
grade is A

✍️answer

점수를 입력받고 기준과 비교하여 점수를 출력한다.

score = int(input("score: "))
if(score > 80 and score <= 100):
    print('grade is A')
elif(score > 60 and score <= 80):
    print('grade is B')
elif(score > 40 and score <= 60):
    print('grade is C')
elif(score > 20 and score <= 40):
    print('grade is D')
else:
    print('grade is E')

 

123

📖question

사용자로부터 달러, 엔, 유로, 또는 위안 금액을 입력받은 후 이를 원으로 변환하는 프로그램을 작성하라. 각 통화별 환율은 다음과 같다.

사용자는 100 달러, 1000 엔, 13 유로, 100 위안과 같이 금액과 통화명 사이에 공백을 넣어 입력한다고 가정한다.

통화명 환율
달러 1167
1.096
유로 1268
위안 171
>> 입력: 100 달러
116700.00 원

✍️answer

통화명과 돈을 공백으로 구분하여 입력받고, 통화명을 비교하여 환율을 곱해준다.

# 나의 풀이
num, currency = input("돈 입력:").split()
num = int(num)
if(currency == "달러"):
    won = num*1167
elif(currency == "엔"):
    won = num*1.096
elif(currency == "유로"):
    won = num*1268
elif(currency == "위안"):
    won = num*171
print(round(won, 2), '원')

# 의도한 풀이
환율 = {"달러": 1167,
      "엔": 1.096,
      "유로": 1268,
      "위안": 171}
user = input("입력: ")
num, currency = user.split()
print(float(num) * 환율[currency], "원")

 

124

📖question

사용자로부터 세 개의 숫자를 입력 받은 후 가장 큰 숫자를 출력하라.

>> input number1: 10
>> input number2: 9
>> input number3: 20
20

✍️answer

숫자 세 개를 비교하려면 두 개를 비교하여 큰 값을 max에 넣고 max와 남은 값을 비교하여 최댓값을 구한다.

num1, num2, num3 = map(int, input("숫자 세 개를 입력:").split())
max = (num1 if num1 > num2 else num2)
max = (max if max > num3 else num3)
print(max)

 

125

📖question

휴대폰 번호 앞자리에 따라 통신사는 아래와 같이 구분된다.

사용자로부터 휴대전화 번호를 입력 받고, 통신사를 출력하는 프로그램을 작성하라.

번호 통신사
011 SKT
016 KT
019 LGU
010 알수없음
>> 휴대전화 번호 입력: 011-345-1922
당신은 SKT 사용자입니다.

✍️answer

전화번호를 하이픈으로 구분하여 저장하고 앞부분을 조건과 비교하여 통신사를 출력한다.

phone = input('전화번호: ').split('-')
if (phone[0] == '011'):
    a = 'SKT'
elif(phone[0] == '016'):
    a = 'KT'
elif(phone[0] == '019'):
    a = 'LGU'
elif(phone[0] == '010'):
    a = '알수없음'
print('당신은', a, '사용자 입니다.')

 

126

📖question

우편번호는 5자리로 구성되는데, 앞의 세자리는 구를 나타낸다. 예를들어, 강북구의 경우 010, 011, 012 세 자리로 시작한다.

  0 1 2 3 4 5 6 7 8 9
01 강북구 강북구 강북구 도봉구 도봉구 도봉구 노원구 노원구 노원구 노원구

사용자로 부터 5자리 우편번호를 입력받고 구를 판별하라

>> 우편번호: 01400
도봉구

✍️answer

우편번호를 입력받고 앞 3자리를 비교하여 해당하는 지역을 출력한다.

num = input('우편번호: ')
num = num[:3]
if num in ['010', '011', '012']:
    print("강북구")
elif num in ['013', '104', '105']:
    print("도봉구")
elif num in ['016', '107', '108', '109']:
    print("노원구")

 

127

📖question

주민등록번호 뒷 자리 7자리 중 첫째 자리는 성별을 나타내는데, 1, 3은 남자 2, 4는 여자를 의미한다.

사용자로부터 13자리의 주민등록번호를 입력 받은 후 성별 (남자, 여자)를 출력하는 프로그램을 작성하라.

>> 주민등록번호: 821010-1635210
남자

✍️answer

주민등록번호를 하이픈으로 구분하여 입력받고, a의 첫번째 수를 비교하여 출력한다.

a, b = input('주민등록번호: ').split('-')
if (a[0] == '1' or a[0] == '3'):
    print('남자')
elif (a[0] == '2' or a[0] == '4'):
    print('여자')

 

128

📖question

주민등록번호의 뒷 자리 7자리 중 두번째와 세번째는 지역코드를 의미한다.

주민 등록 번호를 입력 받은 후 출생지가 서울인지 아닌지 판단하는 코드를 작성하라

지역코드 출생지
00 ~ 08 서울
09 ~ 12 부산
>> 주민등록번호: 821010-1635210
서울이 아닙니다.
>> 주민등록번호: 861010-1015210
서울 입니다.

✍️answer

주민등록번호를 하이픈으로 구분하여 입력받고, b의 두번째~다섯번째 자리를 비교하여 출력한다.

# 나의 풀이
a, b = input('주민등록번호: ').split('-')
if b[1:3] in ['00', '01', '02', '03', '04', '05', '06', '07', '08']:
    print("서울입니다.")
elif b[1:3] in ['09', '10', '11', '12']:
    print("부산입니다.")
else:
    print("서울이 아닙니다.")

# 의도한 풀이
if 0 <= int(b[1:3]) <= 8:
    print("서울입니다.")
else:
    print("서울이 아닙니다.")

 

129

📖question

주민등록번호는 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
유효하지 않은 주민등록번호입니다. 

✍️answer

주민등록번호는 문자열이기 때문에 한자리씩 인덱싱하여 int로 바꾼 뒤 유효성 체크식을 쓴다.

마지막 숫자와 그 값이 같은지 여부를 확인하고 답을 출력한다.

num = input("주민등록번호: ")
sum = int(num[0]) * 2 + int(num[1]) * 3 + int(num[2]) * 4 + int(num[3]) * 5 + int(num[4]) * 6 + \
        int(num[5]) * 7 + int(num[7]) * 8 + int(num[8]) * 9 + int(num[9]) * 2 + int(num[10])* 3 + \
        int(num[11])* 4 + int(num[12]) * 5
total = 11 - (sum % 11)
s = str(total)
if num[-1] == total[-1]:
    print("유효한 주민등록번호입니다.")
else:
    print("유효하지 않은 주민등록번호입니다.")

 

130

📖question

아래 코드는 비트코인의 가격 정보를 딕셔너리로 가져오는 코드이다.

import requests
btc = requests.get("https://api.bithumb.com/public/ticker/").json()['data']

btc 딕셔너리 안에는 시가, 종가, 최고가, 최저가 등이 저장되어 있다.

최고가와 최저가의 차이를 변동폭으로 정의할 때 (시가 + 변동폭)이 최고가 보다 높을 경우 "상승장", 그렇지 않은 경우 "하락장" 문자열을 출력하라.

Key Name Description
opening_price 최근 24시간 내 시작 거래금액
closing_price 최근 24시간 내 마지막 거래금액
min_price 최근 24시간 내 최저 거래금액
max_price 최근 24시간 내 최고 거래금액

✍️answer

코드를 변수에 저장하는 식을 쓰고 변동폭, 시가, 최고가를 구한 뒤 비교하여 답을 출력한다.

import requests
btc = requests.get("https://api.bithumb.com/public/ticker/").json()['data']

변동폭 = float(btc['max_price']) - float(btc['min_price'])
시가 = float(btc['opening_price'])
최고가 = float(btc['max_price'])

if (시가+변동폭) > 최고가:
    print("상승장")
else:
    print("하락장")

'Python > 초보자를 위한 300제' 카테고리의 다른 글

141~150 파이썬 반복문 2  (0) 2022.05.02
131~140 파이썬 반복문 1  (0) 2022.05.01
111~120 파이썬 분기문 2  (0) 2022.04.29
101~110 파이썬 분기문 1  (0) 2022.04.28
061~070 파이썬 리스트 2  (0) 2022.04.12
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday