1. 제어문 - if
■ if 문
- 조건문, 다른 언어와 유사
- 수행할 문장은 반드시 들여쓰기
- 들여쓰기는 언제나 같은 깊이로 해여 한다.
- 탭, 스페이스 2가지를 혼용해서 쓰면 안된다. 최근에는 공백 4개
- if 조건문, while, for 문 끝에 콜론(:)을 사용
- 조건문에 비교 연산식 대신 변수를 바로 쓸 수도 있으며, 변수 자체가 논리식이 되는데 이때 각 변수의 논리값은 다음과 같이 결정된다.
타입 | 참 | 거짓 |
숫자 | 0이 아닌 숫자 | 0 |
문자열 | 비어있지 않은 상태 | " " |
리스트, 튜플, 딕셔너리 | 비어있지 않은 상태 | 빈 상태 |
■ if 문의 형식
score = float(input('성적입력: '))
if score >= 90:
print('합격')
elif 70 <= score < 90:
print('재시험')
else:
print('탈락')
notEmptyString = 'test'
if notEmptyString:
print('문자열이 비어있지 않습니다.')
else:
print('문자열이 비어있습니다.')
I = 10
# if I % 2 == 0:
if not I % 2: # I % 2의 값이 0 이면 False이기 때문에 not을 붙여서 True로 반전
print('짝수')
else:
print('홀수')
[문제] 정수 하나를 입력받아 5의 배수인지 조사하여 그 결과를 출력하세요.
number = int(input('정수 입력: '))
if S % 5 == 0:
print('5의 배수입니다.')
else:
print('5의 배수가 아닙니다.')
[문제] 화폐단위 계산
- 사용자로부터 금액을 입력 받아 화폐의 개수를 출력하는 프로그램을 작성하세요.
- (조건) 화폐의 종류(단위): 만원, 천원, 백원, 십원 (일원 단위는 절사)
[예시]
금액을 입력하세요: 45630
만원: 4개
천원: 5개
백원: 6개
십원: 3개
money = int(input('금액을 입력하세요: '))
만원 = money // 10000
천원 = (money - 만원*10000) // 1000
백원 = (money - 만원*10000 - 천원*1000) // 100
십원 = (money - 만원*10000 - 천원*1000 - 백원*100) // 10
print(f'만원: {만원}개')
print(f'천원: {천원}개')
print(f'천원: {백원}개')
print(f'천원: {십원}개')
money = int(input('금액을 입력하세요: '))
만원 = money // 10000
천원 = (money % 10000) // 1000
백원 = (money % 1000) // 100
십원 = (money % 100) // 10
print(f'만원: {만원}개')
print(f'천원: {천원}개')
print(f'천원: {백원}개')
print(f'천원: {십원}개')
■ 삼항 연산자
- True일 때 실행될 문장 if 조건문 else False일 때 실행될 문장
a = 10
b = 20
result = 'a와 b는 같지 않다' if a != b else 'a와 b는 같다'
print(result)
[문제] 대도시 여부 판단
[판단 조건]
수도이면서 인구가 100만 이상인 도시
또는, 부자가 20만 이산인 도시
[예시]
수도입니까? (수도: 1, 수도아님: 0) 1
인구 (단위: 만) 150
부자의 수 (단위: 만) 10
대도시 여부: True
수도입니까? (수도: 1, 수도아님: 0) 0
인구 (단위: 만) 90
부자의 수 (단위:만) 30
대도시 여부: True
처리조건: 삼항 연산자 이용
수도 = int(input('수도입니까? '))
인구 = int(input('인구: '))
부자 = int(input('부자의 수: '))
result = '대도시 여부: True' if 수도 == 1 and 인구 >= 100 or 부자 >= 20 else '대도시 여부: False'
print(result)
isCapital = input('수도입니까? (수도: 1, 수도아님: 0) ')
citizens = int(input('인구 (단위: 만) '))
riches = int(input('부자의 수 (단위:만) '))
metropolis = True if (isCapital == '1' and citizens >= 100) or riches >= 20 else False
print('대도시 여부:', metropolis)
2. 반복문 - while
■ while 문 형식
- 조건이 만족하는 동안 명령문을 반복적으로 실행한다.
■ while else 문 형식
- 조건을 만족하지 않아 while 문을 빠져나오게 되면 else 문이 실행된다.
c = 1
while c <= 5:
print(c, end=' ') # end 공백 -> 개행하지 않음
c += 1
print('End')
sum = 0
for i in range(1, 11):
sum += i
print(sum)
[문제] 1~100 사이 값 중 짝수의 합을 구하는 코드를 작성하세요.
sum = 0
for i in range(1, 101):
# if not i % 2: # 짝수면
if i % 2:
continue # 홀수면 continue -> sum하는 걸 skip
sum += i
print(sum)
while True:
s = input('영어단어를 입력하세요(종료:q): ')
if s == 'q': break
print(s)
print('End')
for s in 'abcdef':
print(s, end=',')
print(s, sep=',')
# 프린트 함수안의 여러개 값을 출력할때 구분하고자 할때 sep로 구분해줌 여기서 의미 없음
print('\b')
for s in 'abcdef':
print(s, end=',')
# 프린트 함수안의 여러개 값을 출력할때 구분하고자 할때 sep로 구분해줌 여기서 의미 없음
print('\b')
3. 반복문 - for
■ for 문 형식
- range() 함수와 함께 사용하여 지정된 횟수 만큼 반복하거나 문자열이나 리스트와 같은 자료형을 순회할 때 사용
■ for 문과 range() 함수의 사용
- range는 지정한 start, end 사이의 숫자를 step의 간격으로 발생시킨다.
- range의 결과는 start부터 end 바로 앞 숫자까지 컬렉션을 만든다.
- start와 step은 생략 가능하며, start를 생략하면 0부터, step을 생략하면 1씩 증가한다.
■ for와 list (파이썬스럽지 못한 코드)
a = [1,2,3,4] # a는 list 객체 (list: 동일한 데이터 타입의 집합)
result = []
for i in a:
result.append(i*3) #append()는 리스트 객체에 요소 값을 추가 하는 함수
print(result)
■ for와 list (파이썬다운 코드) - LIst Comprehension
a = [1,2,3,4]
result = [i*3 for i in a]
print(result)
a = [1,2,3,4]
result = [i*3 for i in a if i%2 == 0]
print(result)
a = [1,2,3,4]
result = [i*3 if i%2 == 0 else i for i in a]
print(result)
3. break, continue
■ break
- break 명령은 반복문을 끝낸다.
- 조건문과 함께 반복을 끝낼 조건을 검사한 후 실행한다.
■ continue
- 현재 반복 실행을 중지하고 그 다음 반복을 수행한다.
- 조건문과 함께 현재 반복을 끝낼 조건을 검사한 후 실행한다.
key_word = input('검색 단어를 입력하세요: ')
word_list = ['java', 'python', 'c++', 'pascal']
find = False
for w in word_list:
if key_word == w:
print('검색 결과:', w)
find = True
break
if not find:
print('검색 결과가 없습니다.')
key_word = input('검색 단어를 입력하세요: ')
word_list = ['java', 'python', 'c++', 'pascal']
for w in word_list:
if key_word == w:
print('검색 결과:', w)
break
else: print('검색 결과가 없습니다.')
검색 단어를 입력하세요: java
검색 결과: java
[문제] for문과 문자열 반복을 이용하여 다음 문자열이 출력되는 프로그램을 작성하세요.
---------+---------+---------+---------+---------+
for k in range(1, 6):
for i in range(1, 10):
print('-', end='')
print('+', end='')
for i in range(5): # end 값만 넣어주면 반복 횟수
print('-'*9, end='')
print('+', end='')
[문제] 입력 받은 단의 구구단을 출력하는 프로그램을 작성하세요.
단 = int(input('단을 입력하세요: '))
for v in range(1, 10):
print(단, 'x', v, '=', 단*v)
단 = int(input('단을 입력하세요: '))
for v in range(1, 10):
print(f'{단} x {v} = {단*v}')
[문제] 정수를 입력 받아 1부터 입력받은 정수까지의 합을 구하여 출력하는 프로그램을 작성하세요.
- 단, 반복문은 while문을 이용할 것
a = int(input('정수를 입력하세요: '))
sum = 0
i = 0
while i < a:
i += 1
sum += i
print(sum)
num = int(input('정수 입력: '))
cnt = 0 # 반복 횟수
sum = 0 # 전체 합계를 지정
while cnt < num:
cnt += 1
sum += cnt
print(f'1 ~ {num}까지의 합: {sum}')
[문제] 연도를 입력 받아 윤년인지 평년인지 판단하는 프로그램을 작성하세요.
- 프로그램은 반복적으로 수행되며 0을 입력받으면 프로그램을 종료한다.
- 윤년 조건: 4로 나누어 떨어지고, 100으로 나누어 떨어지지 않는 해. 또는, 400으로 나누어 떨어지는 해
[예시]
연도를 입력하세요(종료:0): 2020
2020년은 윤년입니다.
연도를 입력하세요(종료:0): 2021
2021년 평년입니다.
while True:
year = int(input('연도를 입력하세요(종료:0): '))
if year == 0: break
result = '윤년' if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0 else '평년'
print(f'{year}은 {result}입니다.')
[문제] BMI 측정 프로그램
- 키와 몸무게를 입력 받아 BMI를 측정하는 프로그램을 작성하세요.
[예시]
키를 입력하세요(cm): 170
몸무게를 입력하세요(kg): 85
당신의 BMI는 비만 1단계 입니다.
[BMI 계산식]
BMI = 몸무게(kg) / (키(m)의 제곱)
18.5 미만: 저체중
18.5 ~ 22.9: 정상체중
23 ~ 29.9: 비만 1단계
29.9 초과: 비만 2단계
height = int(input('키를 입력하세요(cm): '))
weight = int(input('몸무게를 입력하세요(kg): '))
BMI = weight / (height/100)**2
if BMI < 18.5:
print('당신의 BMI는 저체중입니다.')
elif 18.5 <= BMI <= 22.9:
print('당신의 BMI는 정상체중입니다.')
elif 23 <= BMI <= 29.9:
print('당신의 BMI는 비만 1단계입니다.')
else:
print('당신의 BMI는 비만 2단계입니다.')
height = float(input('키를 입력하세요(cm): '))
weight = float(input('몸무게를 입력하세요(kg): '))
BMI = weight / ((height/100)**2)
result = ''
if BMI < 18.5:
result = '저체중'
elif 18.5 <= BMI <= 22.9:
result = '정상체중'
elif 22.9 < BMI <= 29.9:
result = '비만 1단계'
else:
result = '비만 2단계'
print(f'당신의 BMI는 {result}입니다.')
'프로그래밍 언어 > Python' 카테고리의 다른 글
[Python] 연산자 및 자료형 변환 (0) | 2023.10.29 |
---|---|
[Python] 표준 입출력 (1) | 2023.10.29 |
[Python] 문자열 다루기 (1) | 2023.10.29 |
[Python] Collection - List (0) | 2023.10.29 |
[Python] Collection - Dictionary (1) | 2023.10.27 |