728x90
반응형
초보자를 위한 파이썬(Python) 300제 풀이
121. 사용자로부터 문자 한 개를 입력 받고, 소문자일 경우는 대문자로, 대문자일 경우는 소문자로 변경해서 출력하세요.
>> a
A
- islower() 함수는 문자의 소문자 여부를 판별합니다. 만약 소문자일 경우 True, 대문자일 경우 False를 출력합니다.
- upper() 함수는 대문자로, lower() 함수는 소문자로 변경합니다.
in_one = input("알파벳 하나를 입력하세요. : ")
if in_one.islower() == True:
print(in_one.upper())
else:
print(in_one.lower())
- 위 힌트를 참고하여 input 값을 대문자인지 소문자인지 평가합니다.
- 그 값에 따라 if 문을 사용하여 소문자는 대문자로, 대문자는 소문자로 변경합니다.
122. 점수 구간에 해당하는 학점이 아래와 같이 정의되어 있습니다. 사용자로부터 score를 입력받아서 학점을 출력하세요.
점수 | 학점 |
81 ~ 100 | A |
61 ~ 80 | B |
41 ~ 60 | C |
21 ~ 40 | D |
0 ~ 20 | E |
>> score: 83
grade is A
scores = input("score : ")
score = int(scores)
if score >= 81 and score <= 100:
print("grade is A")
elif score >= 61 and score <= 80:
print("grade is B")
elif score >= 41 and score <= 60:
print("grade is C")
elif score >= 21 and score <= 40:
print("grade is D")
elif score >= 0 and score <= 20:
print("grade is E")
if 81 <= score <= 100:
- input 으로 받은 값은 문자열에 해당하므로 int를 사용하여 정수형으로 만들어줍니다.
- 연산자를 적용하기 위해선 정수형 자료가 필요하기 때문입니다.
- if 문을 통해 input 으로 받는 값들의 범위를 정해서 그에 맞는 값을 출력하도록 해줍니다.
- "81 <= score <= 100" 이처럼 사용할수도 있습니다.
123. 사용자로부터 달러, 엔, 유로 또는 위안 금액을 입력받은 후에 이를 원으로 변환하는 프로그램을 작성하세요. 각 통화별 환율은 아래와 같습니다. 사용자는 "100 달러, 1000 엔, 13 유로, 100 위안" 과 같이 금액과 통화명 사이에 공백을 넣어 입력한다고 가정합니다.
통화명 | 환율 |
달러 | 1167 |
엔 | 1.096 |
유로 | 1268 |
위안 | 171 |
>> 입력: 100 달러
116700.00 원
one = input("입력 : ")
cash = one.split(" ")[0]
name = one.split(" ")[1]
if name == "달러":
print(round(int(cash) * 1167, 2), "원")
elif name == "엔":
print(round(int(cash) * 1.096, 2), "원")
elif name == "유로":
print(round(int(cash) * 1268, 2), "원")
elif name == "위안":
print(round(int(cash) * 171, 2), "원")
환율 = {"달러": 1167,
"엔": 1.096,
"유로": 1268,
"위안": 171}
user = input("입력: ")
num, currency = user.split()
print(float(num) * 환율[currency], "원")
- 첫 번째 답안은 문제의 가정조건을 사용하여 split으로 통화명과 환율을 나눈 후 if 문을 사용하여 출력합니다.
- 두 번째 답안은 딕셔너리를 사용하여, split으로 나눈 값을 리스트로 각각의 값을 지정해주고 key와 value 값을 이용하여 출력합니다.
- 두 번째 답안이 코드의 가시성이 좋고 짧기에 더 좋은 코드라고 볼 수 있습니다.
124. 사용자로부터 세 개의 숫자를 입력 받은 후, 가장 큰 숫자를 출력하세요.
>> input number1: 10
>> input number2: 9
>> input number3: 20
20
num_1 = input("input number1 : ")
num_2 = input("input number2 : ")
num_3 = input("input number3 : ")
num_li = []
num_li.append(int(num_1))
num_li.append(int(num_2))
num_li.append(int(num_3))
print(max(num_li))
num1 = input("input number1: ")
num2 = input("input number2: ")
num3 = input("input number3: ")
num1 = int(num1)
num2 = int(num2)
num3 = int(num3)
if num1 >= num2 and num1 >= num3:
print(num1)
elif num2 >= num1 and num2 >= num3:
print(num2)
else:
print(num3)
- 첫 번째 답안은 input 값들을 int 형식으로 받아 한 리스트에 전부 넣고, 그 중 가장 큰 값을 불러오는 max 함수를 사용하여 출력하는 방법입니다.
- 두 번째 답안은 input 값들을 int 형식으로 만들어 if 문을 사용해 출력하는 방법입니다.
- 개인적으로 첫 번째 방법이 가시성과 편리함이 더 좋다고 생각합니다.
125. 휴대폰 번호 앞자리에 따라 통신사는 아래와 같이 구분됩니다. 사용자로부터 휴대전화 번호를 입력 받고, 통신사를 출력하는 프로그램을 작성하세요.
번호 | 통신사 |
011 | SKT |
016 | KT |
019 | LGU |
010 | 알수 없음 |
>> 휴대전화 번호 입력: 011-345-1922
당신은 SKT 사용자입니다.
ph_num = input("휴대전화 번호 입력 : ")
ph_net = {"011" : "SKT",
"016" : "KT",
"019" : "LGU",
"010" : "알수 없음"}
print("당신은", ph_net[ph_num[:3]], "사용자입니다.")
number = input("휴대전화 번호 입력: ")
num = number.split("-")[0]
if num == "011":
com = "SKT"
elif num == "016":
com = "KT"
elif num == "019":
com = "LGU"
else:
com = "알수없음"
print(f"당신은 {com} 사용자입니다.")
- 첫 번째 답안은 딕셔너리, 슬라이싱 그리고 인덱싱을 이용한 방법입니다.
- 두 번째 답안은 split, if 문, f-string 방법을 이용한 방법입니다.
- 두 방법 다 활용하는데 좋다고 생각합니다.
- 또한 다양한 함수와 메서드를 두 답안을 보며 상기시킬 수 있어 좋은 예시라고 볼 수 있습니다.
출처 = https://wikidocs.net/book/922, 초보자를 위한 파이썬 300제,
PyCharm 사용
728x90
반응형
'개발 > (1) 초위파(Python) 300제 풀이' 카테고리의 다른 글
초보자를 위한 파이썬(Python) 300제 풀이 (131, 132, 133, 134, 135) (0) | 2022.10.27 |
---|---|
초보자를 위한 파이썬(Python) 300제 풀이 (126, 127, 128, 129, 130) (0) | 2022.10.25 |
초보자를 위한 파이썬(Python) 300제 풀이 (116, 117, 118, 119, 120) (0) | 2022.10.23 |
초보자를 위한 파이썬(Python) 300제 풀이 (111, 112, 113, 114, 115) (0) | 2022.10.21 |
초보자를 위한 파이썬(Python) 300제 풀이 (106, 107, 108, 109, 110) (0) | 2022.10.15 |