문제 출처) 시간순삭 파이썬
1. 소금물의 농도 구하기 문제

소금물의 농도 구하는 공식은 초등학교 때도 많이 써봤기 때문에 다들 익숙할 것이다...
소금의 양, 그리고 물의 양을 입력받아 소금물의 농도를 구하는 프로그램을 작성하면 된다.
소금의 양은 몇 g인가?
물의 양은 몇 g인가?
소금물의 농도 ->
이렇게 출력하면 된다.
결과

내가 작성한 코드
salt=float(input("소금의 양은 몇 g인가? : "))
water=float(input("물의 양은 몇 g인가? : "))
con=(salt/(salt+water))*100
print('소금물의 농도: ' + str(con)+'%')
salt에는 소금의 양, water에는 물의 양을 input으로 입력받았고, con(concentration 줄임)에는 농도가 몇인지에 대한 공식을 적어놓았다. 그리고 print 문에 농도 결과를 출력!
여기서 중요한 것은, 소금이나 물의 양에 소수점이 붙을 수도 있으니까 int 대신 float 자료형을 선언해주었고, print 출력할 때 con에 문자열 취급을 해주어야 오류가 안 나기 때문에 str도 넣어주었음.
2. 간단한 챗봇 프로그램
챗봇이 우리에게 이름과 나이를 물어보는 대화 형식의 프로그램을 작성하는 것이다.
실행 결과에는 다음과 같이 나와야 한다고 한다
안녕하세요
이름이 뭔가요? 000
만나서 반갑습니다 000님
000님, 이름의 길이는 다음과 같아요 : n
나이가 어떻게 되나요? nn
내년이면 nn+1세가 되시는군요
작성해보자!
결과

^^;
실수했다. len(name)은... 자료형이 문자열이 아니기 때문에 이것도 변환해줘야 한다.

age+1도 str 안해줬쥬..?

나이는 흐린눈이어라..
정상적으로 잘 출력됐다.
내가 작성한 코드
print('안녕하세요!')
name=input('이름이 뭔가요? : ')
print('만나서 반갑습니다! ' + name + '님!')
print(name + '님, 이름의 길이는 다음과 같습니다. ' + str(len(name)))
age = int(input('혹시 나이가 어떻게 되시나요? : '))
print('아 ! 내년이면 ' + str(age+1) + '세가 되시는군요 !')
이름의 길이를 출력할 땐 len() 함수를 사용하면 된다. 그리고 책에서 알려주는 한 가지 팁. print() 함수에서 end=''를 사용하면 그다음 print() 함수가 다음 줄에서 실행되지 않고 한 줄에 같이 출력된다고 한다.
end='' 기억하기!
사용 예시) print("반갑습니다!", end='')
쉼표.. 하고 end=''
3. 거북이와 인사해봐요
입력창을 띄워서 사용자로부터 이름을 입력받고, 거북이가 인사 메시지를 보낸 후 사각형도 그려주는.. 프로그램을 작성하라.
일단 터틀 그래픽을 사용할 import를 적어준 후에 입력창을 띄우면 되는데, 입력창을 띄워본 적이 없어서 이 부분은 책을 참고해봤다.
그런데, textinput을 받는 도중, 앞에 큰 따옴표를 작성하고, 그 뒤에 이름이 뭔가요?를 물어보도록 써져있어서 이게 뭔지 한참 생각을 해봤는데,
name = turtle.textinput("", "이름이 뭔가요? : ")
"", 이 부분에는 textinput의 title를 작성하는 것이었다. 이 문제에선 출제자가 따로 제목을 명시하지 않은 거였음!

방가방가라고 써줬더니 저렇게 title 방가방가가 그대로 뜬다.

haeily라고 입력했더니 귀여운 거북이가 정사각형을 만들며 나를 반겨준다.
내가 작성한 코드
import turtle
t= turtle.Turtle()
t.shape("turtle")
name = turtle.textinput("방가방가", "이름이 뭔가요? : ")
t.write("안녕하세요" + name +"님, 거북이가 인사드려요")
t.forward(90)
t.left(90)
t.forward(90)
t.left(90)
t.forward(90)
t.left(90)
t.forward(90)
import로 turtle 그래픽을 사용한다고 선언해주고, turtle.textinput에 입력창을 띄어준 후, t.write 함수를 사용해 거북이가 말을 할 수 있게 적어준다. 그리고 밑에는 사각형을 만들 수 있도록 forward와 left 함수를 이용했다.
4. 암호프로그램 만들기
평문을 거꾸로 바꿔 암호문을 만드는 프로그램을 만들어라.
예를 들어 '잘 가!'를 '!가잘'이라고 출력하라는 뜻
결과

내가 작성한 코드
sen=input('저장할 문자열을 입력하세요: ')
print(sen[-1::-1])
최대한 간단하게 작성해봤다. 여기서 포인트는 문자열을 어떻게 거꾸로 출력하나!!인데, 바로 전에 공부했던 배열을 이용해보았다. 처음에는 그냥 sen[-1:] 이렇게 했는데.. (어디서 저렇게 쓰면 왼쪽에 적어놓은 자릿수부터 순서대로 출력된다는 게 생각남) 내가 생각한 결과물이 안 나와서 -1::-1라고 작성해줬다. 첫 번째에 적힌 -1은 문자열 맨 끝부터 시작한다는 뜻이고, 2번째 비워진 자리는 끝까지를 의미함! 그리고 3번째 -1은 문자열 맨 끝 -1자리부터 -1 단위, 즉 하나씩 차례대로 출력한다는 뜻이다.
후후
5. 2050년에 나는 몇 살?
time() 함수를 이용해 현재 연도를 출력하는 프로그램을 만드는 것
일단.. time 함수를 가볍게 작성해보자
import time
now=time.time()
print(now)

알 수 없는 (?) 숫자가 떴다. 이 숫자는 UTC(GMP+0)를 기준으로 1970년 1월 1일 0시 0분 0초부터 지금까지의 시간을 보여준다. (초단위) timestamp라고도 함! 다른.. 프로그래밍 언어를 다룰 때도 본 것 같다. 리눅스에서도...! 그러니까 이 숫자는.. 컴퓨터에게 친화적이지 인간에겐 생소한 숫자다.
문제가 원하는 결과
올해는 n년입니다.
당신의 나이를 입력하세요:
2050년에는 n살이군요
이 타임스탬프는 2가지 방법으로 변환을 할 수가 있는데, gmtime()과 localtime()이 있다.

위에는 gmtime()의 결과값, 밑에는 localtime()의 결과값이다.
gmtime()은 GMT 기준으로 time_struct 타입 데이터로 변환한 것이고, localtime()은 내가 현재 살고 있는 현지 시간을 나타낸 것이다. 여기서 우리가 필요한 건 바로 연도!
strftime() 함수를 사용하면 time_struct 데이터를 문자열로 변환해준다고 한다.
내가 작성한 코드 먼저
import time
now=time.localtime()
tm=time.strftime('%Y')
print('올해는' +str(tm)+'년입니다.')
age=int(input('당신의 나이를 입력하세요: '))
print('2050년에는 ' + str(2050-int(tm)+age)+'살이군요!!')
처음엔 맨 마지막 코드 부분에 str(2050-int(tm)+age)가 아닌 str(2050-tm+age)로 작성했는데

이렇게 오류가 났다. tm에도 int를 씌워줘야 했음.

그럼 결과는 이런 식으로 나온다!
사실 해설 코드는 내가 한 거랑 다르게 나왔는데,
time()을 365*24*3600만큼 나눠주면 오늘이 몇 년인지 알 수 있다고 한다.
int(1970 + now//(365*24*3600)
이렇게!
요건 몰랐던 부분 ,,,☆★ 그래도 gmtime과 localtime, strftime이라는 함수를 알았으니,, 완료
어쨌든 5문제 모두 풀어보았다. 충분히 내 힘으로 풀 수 있는 난이도였음. 기초 공부하시는 분들한테 강추.
'STUDY > Python' 카테고리의 다른 글
| [3] 파이썬 기초 : 자료의 종류 정수, 실수, 문자열 (0) | 2022.03.10 |
|---|---|
| [2] 파이썬 기초 : 연산자, 계산하기 (0) | 2022.02.13 |
| [1] 파이썬 기초 : 변수, input() 함수 (0) | 2022.02.09 |
| [0] 파이썬 공부를 시작하며 (0) | 2022.02.05 |
댓글