<내용정리>
- 관련 파일
- 본문
## break
#0부터 99까지 출력
i = 0
while True:
print(i, end=', ')
i += 1
if i == 100:
break
while True:
city = input('대한민국의 수도는 어디인가요? :')
if city == '서울' or city == 'seoul' or city == 'SEOUL':
print('정답입니다')
break
else:
print('오답입니다. 다시 시도하세요')
hobbies = []
while True:
hobby = input('취미를 입력하세요(종료는 엔터) : ')
if hobby == '':
print('입력한 취미가 모두 저장되었습니다')
break
else:
hobbies.append(hobby)
print(hobbies)
# ex) 반복문을 이용한 커피 자판기 프로그램(커피만 판매, 커피 가격 300원, 한번에 한잔만 주문가능)
coffee = 3 # 커피의 개수
while True:
money = int(input('돈을 넣어주세요 : '))
if money == 300:
print('커피 나왔습니다')
coffee -= 1
print(f'남은 커피의 양은 {coffee}개입니다')
elif money > 300:
print('커피 나왔습니다')
coffee -= 1
print(f'거스름돈 {money - 300}원을 받으세요')
print(f'남은 커피의 양은 {coffee}개입니다')
else:
print('금액이 부족합니다')
print(f'{money}원을 돌려드리겠습니다')
print(f'남은 커피의 양은 {coffee}개입니다')
if coffee == 0:
print('커피가 다 떨어졌습니다. 판매를 중지합니다')
break
## continue
# ex) 0~10 사이의 수 중 홀수만 출력
a = 0
while a < 10:
a += 1
if a % 2 == 0:
continue # continue 바로 위의 조건식을 만족하면 while문 맨 처음으로 올라간다
print(a)
fruits = ['사과', '귤']
count = 3 # 입력해야 할 남은 과일의 수
while count > 0:
fruit = input('어떤 과일을 저장할까요? : ')
if fruit in fruits:
print('동일한 과일이 있습니다')
continue
fruits.append(fruit) # 포함되지 않았다면 리스트에 추가한다
count -= 1
print(f'입력이 {count}번 남았습니다')
print(f'5개의 과일은 {fruits}입니다')\
count = 0
total = 0
while count < 5:
n = int(input(f'{count+1}번째 숫자를 입력하세요 : '))
if n <= 0:
print('0 이하의 정수는 처리할 수 없습니다')
continue
total += n
count += 1
print(f'입력된 5개의 양의 정수의 총 합은 {total}입니다')
## 리스트 내포(리스트 컴프리헨션)(p121)
# <형식>
# 리스트 = [표현식 for 변수 in 반복가능객체]
# append 사용
num = []
for n in [1, 2, 3]:
num.append(n * 2) # n에 2를 곱한 후 num리스트에 추가
print('append 사용 : ', num)
# 리스트 내포 사용
num2 = [n * 2 for n in [1, 2, 3]]
print('리스트 내포 사용 : ', num2)
# append, if 사용
li = [1, 2, 3, 4, 5]
num3 = []
for n in li:
if n % 2 == 1:
num3.append(n * 2)
print('append, if 사용: ', num3)
# 리스트 내포, if 사용(조건을 만족하는 데이터만 출력)
num4 = [n * 2 for n in li if n % 2 == 1]
print('리스트 내포, if 사용 : ', num4)
### 내장함수
## 문자열 내장 함수
# chr() 함수 : 유니코드를 문자로 변환
print(chr(48))
print(chr(49))
print(chr(65))
print(chr(66))
print(chr(97))
print(chr(98))
# ord() 함수 : 문자를 유니코드로 변환
print(ord('A'))
print(ord('한'))
# eval() 함수 : 문자열로 된 값을 계산
print('100 + 200')
print(eval('100 + 200'))
a = 10
print(eval('a * 5'))
print(eval('min(1, 2, 3)')) # min(): 최소값
print(eval('max(1, 2, 3)')) # max(): 최대값
# format() 함수 : 형식을 갖춘 문자열
print(format(10000, ','))
print(format(10000, '_'))
expr = input('계산식을 입력하세요 : ')
result = eval(expr)
print(type(result)) # int or float
print(expr + '=' + str(result)) # +는 문자열 연결 연산자
## 숫자 내장 함수
# abs() 함수 : 절대값
print(abs(10))
print(abs(-10))
# divmod() 함수 : 몫과 나머지
print(divmod(10, 3)) # 결과는 튜플형식 ( , )
d, m = divmod(5, 2)
print(d, m, sep=', ')
# pow() 함수 : 거듭제곱
print(pow(2, 10))
print(pow(10, -3))
# round() 함수 : 반올림 값
print(round(1.5))
print(round(1.4))
print(round(1.55, 1)) # 소수 첫째자리까지
# sum() 함수 : 합계
li = [1, 2, 3, 4 ,5]
print(sum(li))
- 문제 및 정답
1)
# 반복문
'''
[문제] while 문을 이용해서 1부터 100까지의 홀수만 출력하기
[출력결과]
1
3
5
...
97
99
[정답]
i = 1
while i < 100:
print(i)
i += 2 # i = i + 2
'''
'''
[문제] for문을 이용해서 1~5까지의 숫자들을 차례대로 출력하기
[출력결과]
1 2 3 4 5
[정답]
for i in range(1, 6, 1):
print(i, end = ' ')
'''
'''
[문제] for문을 이용해서 1부터 10까지의 합을 구하시오.
[출력결과]
1부터 10까지의 합 : 55
[정답]
hap = 0
for i in range(1, 11, 1):
hap += i # hap = hap + i
print('1부터 10까지의 합 : {}' .format(hap))
'''
'''
[문제] for문을 이용해서 1부터 100사이의 정수 중 5와 7의 공배수 출력하기
[출력결과]
35 : 5와 7의 공배수!!
70 : 5와 7의 공배수!!
[정답]
for i in range(1, 101):
if i % 5 == 0 and i % 7 == 0:
print(i, ': 5와 7의 공배수!!')
'''
2)
# 반복문 추가 문제
'''
[문제] while 문을 이용. 무한 루프를 사용해 입력한 두 숫자의 합계를 반복해서 계산하기
[출력결과]
더할 첫 번째 수를 입력하세요 : 55
더할 두 번째 수를 입력하세요 : 22
55 + 22 = 77
더할 첫 번째 수를 입력하세요 : 77
더할 두 번째 수를 입력하세요 : 120
77 + 120 = 197
더할 첫 번째 수를 입력하세요 :
[정답]
hap = 0
while True:
a = int(input('더할 첫 번째 수를 입력하세요 : '))
b = int(input('더할 두 번째 수를 입력하세요 : '))
hap = a + b
print(f'{a} + {b} = {hap}')
'''
'''
[문제] 위의 문제에서 참고. while문 이용.
위의 문제에서 덧셈 외에 뺄셈, 곱셈, 나눗셈, 나머지까지 계산해보자.
연산자가 아닌 문자를 입력하면 반복문을 종료하게 하자.
[출력결과]
계산할 첫 번째 수를 입력하세요 : 30
계산할 두 번째 수를 입력하세요 : 20
계산할 연산자를 입력하세요 : -
30 - 20 = 10
계산할 첫 번째 수를 입력하세요 : 30
계산할 두 번째 수를 입력하세요 : 20
계산할 연산자를 입력하세요 : *
30 * 20 = 600
계산할 첫 번째 수를 입력하세요 : 30
계산할 두 번째 수를 입력하세요 : 20
계산할 연산자를 입력하세요 : /
30 / 20 = 1.5
계산할 첫 번째 수를 입력하세요 : 30
계산할 두 번째 수를 입력하세요 : 20
계산할 연산자를 입력하세요 : %
30 % 20 = 10
계산할 첫 번째 수를 입력하세요 : 30
계산할 두 번째 수를 입력하세요 : 20
계산할 연산자를 입력하세요 : !
연산자를 잘못 입력하셨습니다.
계산을 종료합니다!
[정답]
while True:
a = int(input('계산할 첫 번째 수를 입력하세요 : '))
b = int(input('계산할 두 번째 수를 입력하세요 : '))
ch = input('계산할 연산자를 입력하세요 : ')
if ch == '+':
print(f'{a} + {b} = {a + b}')
elif ch == '-':
print(f'{a} - {b} = {a - b}')
elif ch == '*':
print(f'{a} * {b} = {a * b}')
elif ch == '/':
print(f'{a} / {b} = {a / b}')
elif ch == '%':
print(f'{a} % {b} = {a % b}')
else:
print('연산자를 잘못 입력하셨습니다.')
print('계산을 종료합니다!')
break
'''
'''
[문제] for문을 이용해서 500과 1000사이에 있는 홀수의 합계 구하기
[출력결과]
500과 1000사이에 있는 홀수의 합계 : 187500
[정답]
hap = 0
for i in range(501, 1001, 2):
hap += i # hap = hap + i
print(f'500과 1000사이에 있는 홀수의 합계 : {hap}')
'''
'''
[문제] for문을 이용.
1부터 키보드로 입력한 값까지의 합계 구하기
[출력결과]
값을 입력하세요 : 123
1부터 123까지의 합계 : 7626
[정답]
hap = 0
num = int(input('값을 입력하세요 : '))
for i in range(1, num + 1):
hap += i
print(f'1부터 {num}까지의 합계 : {hap}')
'''
'''
[문제] for문을 이용. 위의 문제 참고.
시작값과 끝값, 증가값까지 사용자에게 숫자를 입력받아 시작값과 끝값까지의 합계 구하기
[출력결과]
시작값을 입력하세요 : 3
끝값을 입력하세요 : 300
증가값을 입력하세요 : 3
3에서 300까지 3씩 증가시킨 값의 합계 : 15150
[정답]
hap = 0
num1 = int(input('시작값을 입력하세요 : '))
num2 = int(input('끝값을 입력하세요 : '))
num3 = int(input('증가값을 입력하세요 : '))
for i in range(num1, num2+1, num3):
hap += i
print(f'{num1}에서 {num2}까지 {num3}씩 증가시킨 값의 합계 : {hap}')
'''
3)
# for문을 이용한 별 모양 출력하기
'''
[문제] for문을 이용해서 사각형으로 별 출력하기
[출력결과]
*****
*****
*****
*****
*****
[정답]
for i in range(5):
for j in range(5):
print('*', end = '')
print()
'''
'''
[문제] for문을 이용해서 계단식으로 별 출력하기
[출력결과]
*
**
***
****
*****
[정답1]
for i in range(5):
for j in range(i+1):
print('*', end = '')
print()
[정답2[
for i in range(5):
for j in range(5):
if j <= i:
print('*', end = '')
print()
'''
'''
[문제] for문을 이용해서 대각선으로 별 출력하기
[출력결과]
*
*
*
*
*
[정답]
for i in range(5):
for j in range(5):
if j == i:
print('*', end = '')
else:
print(' ', end = '')
print()
'''
'''
[문제] for문을 이용해서 역삼각형으로 별 출력하기
[출력결과]
*****
****
***
**
*
[정답]
for i in range(5):
for j in range(5):
if j < i:
print(' ', end ='')
else:
print('*', end ='')
print()
'''
'학부 자료 > Python' 카테고리의 다른 글
[Python] 파이썬 기초 9/20, 사용자 함수 (1) | 2023.11.07 |
---|---|
[Python] 파이썬 기초 8/20, 시퀀스 내장 함수, 메소드 (0) | 2023.11.07 |
[Python] 파이썬 기초 6/20, 조건문 반복문 2 (0) | 2023.11.07 |
[Python] 파이썬 기초 5/20, 조건문 반복문 1 (0) | 2023.11.07 |
[Python] 파이썬 기초 4/20, 문자열 포매팅 INPUT (0) | 2023.11.07 |