개발/(1) 초위파(Python) 300제 풀이

초보자를 위한 파이썬(Python) 300제 풀이 (121, 122, 123, 124, 125)

생각외로깔끔함 2022. 10. 24. 00:33
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
반응형