Python 공부 기록-2

김시헌·2025년 3월 25일

열번 찍어 안넘어가는 나무 없다 출력하기 while문 사용

코드

treeHit = 0
while treeHit < 10:
  treeHit = treeHit +1
  print("나무를 %d번 찍었습니다." % treeHit)
  if treeHit == 10:
    print("나무 넘어갑니다.")

실행 결과
나무를 1번 찍었습니다.
나무를 2번 찍었습니다.
나무를 3번 찍었습니다.
나무를 4번 찍었습니다.
나무를 5번 찍었습니다.
나무를 6번 찍었습니다.
나무를 7번 찍었습니다.
나무를 8번 찍었습니다.
나무를 9번 찍었습니다.
나무를 10번 찍었습니다.
나무 넘어갑니다.

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

힌트
islower() 함수는 문자의 소문자 여부를 판별합니다. 만약 소문자일 경우 True, 대문자일 경우 False를 반환합니다.
힌트-2
upper() 함수는 대문자로, lower() 함수는 소문자로 변경합니다.
코드

user = input("")
if user.islower():
  print(user.upper())
else:
  print(user.lower())

실행 결과
a를 입력한 경우 A 출력
A를 입력한 경우 a 출력

사용자로부터 달러, 앤, 유로, 또는 위안 금액을 입력받은 후 이를 원으로 변환하는 프로그램을 작성하라. 각 통화별 환율은 다음과 같다. 사용자는 100 달러, 1000 엔, 13 유로, 100 위안과 같이 금액과 통화명 사이에 공백을 넣어 입력한다고 가정한다.

통화명 / 환율
달러 = 1167
엔 = 1.096
유로 = 1268
위안 = 171
코드

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

실행 결과
입력: 100 달러
116700.0 원

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

코드

>> 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:
  largest = num1
elif num2 >= num1 and num2 >= num3:
  largest = num2
else:
  largest = num3

print("가장 큰 숫자는", largest, "입니다.")

실행 결과
18
4
49
가장 큰 숫자는 49 입니다.

휴대폰 번호 앞자리에 따라 통신사는 아래와 같이 구분된다. 사용자로부터 휴대전화 번호를 입력 받고, 통신사를 출력하는 프로그램을 작성하라.

번호 / 통신사
011 SKT
016 KT
019 LGU
010 알수없음
결과 예측

>> 휴대전화 번호 입력: 011-345-1922
당신은 SKT 사용자입니다.

코드

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} 사용자입니다.")

실행 결과
휴대전화 번호 입력: 016-4928-2943
당신은 KT 사용자입니다.

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

사용자로 부터 5자리 우편번호를 입력받고 구를 판별하라
0,1,2 = 강북구
3,4,5, = 도봉구
6,7,8,9, = 노원구

결과 예측

>> 우편번호: 01400
도봉구

코드

우편번호 = input("우편번호: ")
우편번호 = 우편번호[:3]
if 우편번호 in ["010", "011", "012"]:
  print("강북구")
elif 우편번호 in ["014", "015", "016"]:
  print("도봉구")
else:
  print("노원구")

실행 결과
우편번호: 01400
도봉구

주민등록번호는 13자리로 구성되는데 마지막 자리수는 주민등록번호의 유효성을 체크하는데 사용된다. 먼저 앞에서부터 12자리의 숫자에 2,3,4,5,6,7,8,9,2,3,4,5를 차례로 곱한 뒤 그 값을 전부 더한다. 연산 결과 값을 11로 나누면 나머지가 나오는데 11에서 나머지를 뺀 값이 주민등록번호의 마지막 번호가 된다.

1차 계산: (8x2 x 2x3 x 1x4 x 0x5 x 1x6 x 0x7 x 1x8 x 6x9 x 3x2 x 5x3 x 2x4 x 1x5) = (128 % 11) =7
2차 계산: 11-7=4

위와 같이 821010-1635210에 대해서 계산을 해보면 마지막 자리는 4가 되어야 함을 알 수 있다. 즉, 821010-1635210은 유효하지 않은 주민등록번호임을 알 수 있다.

다음과 같이 사용자로부터 주민등록번호를 입력받은 후 주민등록번호가 유요한지를 출력하는 프로그램을 작성하라.

결과 예측

>> 주민등록번호: 821010-1635210
유효하지 않은 주민등록번호입니다.

코드

num = input("주민등록번호: ")
계산1 = 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
계산2 = 11 - (계산1 % 11)
계산3 = str(계산2)

if num[1] == 계산3[-1]:
  print("유효한 주민등록번호입니다.")
else:
  print("유효하지 않은 주민등록번호입니다.")

실행 결과
주민등록번호: 071209-324523
유효하지 않은 주민등록번호입니다.

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

코드

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시간 내 최고 거래금액

코드

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 수업을 들으며, 배운점은 input이 얼마나 많이 쓰이는지 알게되어서 input을 중요시하게 알아놔야한다는 것과 if문으로 여러가지 코드를 싸서 활용할 수 있다는 것도 알게되었다.

부족한 점

오늘 수업을 들으며 내가 느낀 나의 부족한 점은 사고력과 창의력이다. 프로그램 개발에 있어서 코드를 짜는 과중 중에 창의력과 사고력이 부족하여 코드를 알맞게 짜지 못한거같다.
다음 수업을 듣기 전까지 프로그램쪽에서 쓰이는 창의력과 사고력을 키워야 할거같다.

0개의 댓글