SMALL
[ 5_if ]
# 제어문 또는 제어구조 : 코드에 대한 실행의 흐름을 제어하기 위해 제공되는 문법
# 1. 분기
# 2. 반복
# 조건에 따른 분기: if -> 어떤 조건이 참일 때 특정 코드를 수행하는 문법
# 사용방법
# if 조건식: <- 반드시 콜론으로 끝나야 함.
# 다른 언어는 중괄호로 구분: {} , 파이썬은 중괄호를 사용하지 않음. (들여쓰기를 사용함. (1칸 이상, 4칸 권장))
# .... 조건식이 참일때 수행할 코드
# ^--- 파이썬에서는 기존코드와 특정코드를 구분하기 위해 들여쓰기를 사용함. (4칸 들여쓰기 권장)
num1 = 2
num2 = 1
if num1 > num2:
print("OK")
print("OK")
else :
print("notOK")
print("notOK")
# 사용자로부터 정수를 입력 받아 그 값이 0인지 아닌지를 판별
num = int(input("입력="))
if num == 0:
print(f"입력={num}, 0이 맞음")
#else :
if num != 0 :
print(f"입력={num}, 0이 아님")
# 연습문제1. 사용자로부터 자연수를 입력받아 짝수/ 홀수를 판별 (입력은 정수)
num = int(input("입력="))
if (num % 2) != 0 :
print("홀수")
if (num % 2) == 0 :
print("짝수")
# else :
# print("짝수")
# 이전의 코드는 경우에 따라 불필요한 연산이 발생.
# 파이썬은 상호베타적 처리를 위해 if ~ else 라는 문법을 제공.
# 사용방법
# if 조건식:
# .... 조건식이 참일때 수행할 코드
# .... 조건식이 참일때 수행할 코드
# else:
# .... 조건식이 거짓일때 수행할 코드
# .... 조건식이 거짓일때 수행할 코드
num = int(input("입력="))
if num == 0:
print(f"입력={num}, 0이 맞음")
else :
print(f"입력={num}, 0이 아님")
# 연습문제2 1과 똑같은데, 연산은 1번만.
num = int(input("입력="))
if (num % 2) != 0 :
print("홀수")
else :
print("짝수")
# 입력된 값이 0 인지 양수인지 음수 인지 판별하는 프로그램
num = int(input("입력="))
if (num > 0) :
print("양수")
elif (num < 0) :
print("음수")
else :
print("영(0)")
[ 6_if (2) ]
# 입력된 값이 0 인지 양수인지 음수 인지 판별하는 프로그램
num = int(input("입력="))
if (num > 0) :
print("양수")
else:
if (num < 0) :
print("음수")
else :
print("영(0)")
# 이전의 코드는 분기의 중첩으로 코드의 가독성이 떨어지는 단점.
# 파이썬은 다중분기 if ~ elif ~ else 를 지원함.
num = int(input("입력="))
if (num > 0) :
print("양수")
elif (num < 0) :
print("음수")
else :
print("영(0)")
# 연습문제 : 사용자로 부터 나이를 입력 받아 출력하는 프로그램. (나이는 정수)
# 나이는 1~150, 이를 벗어나면 오류메세지
# 나이 입력(1~150): 20
# 당신의 나이는 20세 입니다.
num = int(input("나이 입력(1~150): "))
# if (num < 1 ) :
# print(f"잘못 입력하셨습니다.")
# elif (num >= 150 ) :
# print(f"잘못 입력하셨습니다.")
# else :
# print(f"당신의 나이는 {num}세 입니다.")
if (num < 1 ) | (num >= 150 ) :
print(f"잘못 입력하셨습니다.")
else :
print(f"당신의 나이는 {num}세 입니다.")
# 논리 연산자 : 논리 타입의 값을 피연산자로 하는 연산자
# 1. and
# 2. or
# 3. not
# 1. and 연산자: 2개의 피연산자가 모두 참인 경우에만 참을 반환하고 나머지는 거짓을 반환
# 논리곱 연산자
print( True and True) # 1 and 1 = 1
print( True and False) # 1 and 0 = 0
print(False and True) # 0 and 1 = 0
print(False and False) # 0 and 0 = 0
# 2. or 연산자: 2개의 피연산자중 하나만 참이어도 참을 반환하는 연산자
# 논리합 연산자
print( True or True) # 1 or 1 = 1
print( True or False) # 1 or 0 = 1
print(False or True) # 0 or 1 = 1
print(False or False) # 0 or 0 = 0
# 3. not 연산자: 단항 연산자로 피연산자의 값을 반전
print( not True ) # not 1 = 0
print( not False) # not 0 = 1
num = int(input("나이 입력(1~150): "))
if (num < 1) or (num > 150) :
print(f"잘못 입력하셨습니다.")
else :
print(f"당신의 나이는 {num}세 입니다.")
# 논리연산자를 더 파이썬스럽게 보이게 만든다.
num = int(input("나이 입력(1~150): "))
# 등호를 연쇄적으로 사용.
if (1 <= num <= 150): # comparison chaining - # 파이썬에서만 안전함을 보장함. 다른 언어는 보장못함.
print(f"당신의 나이는 {num}세 입니다.")
else:
print(f"잘못 입력하셨습니다.")
# switch - case 문을 지원하지 않음.
[ 7_for ]
# 반복
# 1. 원소 기반
# 2. 조건 기반
# 자료 구조
# 데이터와 데이터에 적용할 수 있는 함수나 명령의 모음. -> 장바구니
# 파이썬이 기본으로 제공하는 자료구조
# 1. 리스트
# 2. 튜플
# 3. 딕셔너리
# 4. 셋
# 리스트: 데이터의 추가된 순서가 유지되고 중복을 허용하는 선형 자료구조
# 리스트 생성 방법:
# [값1,값2,값3,...]
# ^--- 원소, 요소, 항목
print([4,1,3,2]) # 추가된 순서가 유지
print([1,1,1,1]) # 중복을 허용
# 파이썬이 제공하는 모든 타입의 값을 저장할수 있음.
print([10,3.14,"hello",True,[1,2,3]])
# 원소 기반의 반복문 사용법
# for 변수명 in 리스트: <- 콜론(:)으로 끝나야함.
# ....반복할 코드 (들여쓰기로 구분자 사용.)
# ....반복할 코드 (들여쓰기로 구분자 사용.)
# hello x 5
for cnt in [1,2,3,4,5]: # 반복의 회수(원소의 개수)를 list로 작성.
# print(cnt,"hello")
print(f"{cnt} hello")
for cnt in [10,3.14,"hello",True]: # 이렇게도 됨.(원소의 개수:4 만큼 반복)
print(f"{cnt} hello")
# 파이썬에서 반복문에서 변수를 사용하지 않을 경우, 관례적으로 변수명은 _ 을 사용.
for _ in [1,2,3,4,5]: # 무의미한 변수명 선언: _ (반복문안에서 사용하지 않는 변수명의 사용방법) # 주석보다 더 좋은 방법은 코드가 주석이 되는것.
print(f"hello")
# 연습문제 : 구구단 2~9단
num1 = int(input("구구단 입력(2~9): "))
if( 2<num1 <9) :
for num2 in [1,2,3,4,5,6,7,8,9]:
print(f"{num1} x {num2} = {num1*num2}")
else :
print(f"구구단은 2~9단으로 설정하세요: {num1}")
# hello, world x 10
for _ in [1,2,3,4,5,6,7,8,9,10]:
print("hello,world")
# 100번, 1000번은?
# 정수 집합을 생성하는 함수: range
# 사용방법: range(start, stop, step)
# - start: 시작값
# - stop : 끝값(포함하지 않음) -> 반개구간 [start, stop)
# - step : 값사이의 간격
for var in range(1,11,1):
print(f"{var}", end=" ")
print() # 단순개행하는 역할
for var in range(1,10+1,1):
print(f"{var}", end=" ")
# 연습문제 : 구구단 2단 (range 사용)
num1 = int(input("구구단 입력(2~9): "))
for num2 in range(1,9+1,1):
print(f"{num1} x {num2} = {num1*num2}")
# 연습문제 : 1이상의 자연수를 받아서 1부터 입력된 값 사이의 모든 자연수의 총합 (입력은 1이상의 자연수, 반복문사용)
# 자연수 입력(1이상): 10
# 1부터 10까지 자연수의 총합: 55
num1 = int(input("자연수 입력(1이상): "))
sum = 0
for num2 in range(1,num1+1):
sum=num2+sum
if (num1==num2):
print(f"1부터 {num1}까지 자연수의 총합: {sum}")
# 프로그래밍 분야에서 일반적으로 수를 셀때, 0부터 시작(zero base)
# hello, world x5
for cnt in range(0, 4+1, 1):
print(cnt, "hello, world")
# range 함수의 특징 1. 만약 간격(step)이 1이라면 이를 생략할수 있다.
# hello, world x5
for cnt in range(0, 4+1):
print(cnt, "hello, world")
# range 함수의 특징 2. 만약 간격이 생략되어 있고 시작값이 0이면 이를 생략할수 있다.
# hello, world x5
for cnt in range(4+1):
print(cnt, "hello, world")
# 반복횟수만 쓰면 5번반복해서 사용함.
for cnt in range(5):
print(cnt, "hello, world")
for cnt in range(10):
print(cnt, "hello, world")
# 연습문제, 2단부터 9단까지 한번에 출력 - 단사이에 빈줄 삽입
# for dan in range(2,9+1):
# print(f"< {dan} 단 >")
# print(f"{dan} x 1 = {dan*1}")
# print(f"{dan} x 2 = {dan*2}")
# print(f"{dan} x 3 = {dan*3}")
# print(f"{dan} x 4 = {dan*4}")
# print(f"{dan} x 5 = {dan*5}")
# print(f"{dan} x 6 = {dan*6}")
# print(f"{dan} x 7 = {dan*7}")
# print(f"{dan} x 8 = {dan*8}")
# print(f"{dan} x 9 = {dan*9}")
# print()
for dan in range(2,9+1):
print(f"< {dan} 단 >")
for num in range(1,9+1):
print(f"{dan} x {num} = {dan*num}")
print()
# 반복문도 중첩이 가능.
for i in range(2):
for j in range(3):
print("hello")
# 연습문제 : 2단 - 9단 출력 (반복의 중첩)
for dan in range(2,9+1):
print(f"< {dan} 단 >")
for num in range(1,9+1):
print(f"{dan} x {num} = {dan*num}")
print()
# 1이상의 자연수 입력:5
# *
# **
# ***
# ****
# *****
num = int(input("1이상의 자연수 입력:"))
for repeat in range(1,num+1):
for repeat2 in range(1,repeat+1):
print(f"*",end="")
print(f" ")
[ 8_while ]
# while: 조건 기반 반복문
# 사용방법:
# while 조건식:
# .... 조건식이 참인동안 반복 수행.
# .... 조건식이 참인동안 반복 수행.
# hello, world x3
for _ in range(3):
print("hello, world")
print()
# while 의 경우 반복 횟수를 파이썬이 제어하지 않으므로 이를 직접 수행해야함.
cnt_num = 0
while (cnt_num<3):
print("hello, world")
cnt_num=cnt_num + 1
# 연습문제 구구단을 받아서 만드는
in_num = int(input("구구단 입력(2~9): "))
cnt_repeat = 1
while (cnt_repeat <10):
print(f"{in_num} * {cnt_repeat} = {in_num * cnt_repeat}")
cnt_repeat += 1
# 무한 반복하는 방법
# while True:
#.... 무한 반복할 코드
#.... 무한 반복할 코드
# break: 반복을 즉시 중단하고 반복문을 탈출하는 키워드
print ("# 메뉴 #")
print ("")
# 1부터 100 사이의 임의의수 구하는 방법
#import random
#random.randint(시작값, 끝값) - 끝값을 포함함.
#print(random.randint(1,10))
# 연습문제: 숫자 알아맞히기 게임
# 숫자 알아맞히기 게임을 시작합니다.
# 1~100 값을 입력해주세요.
# 입력: 50
# 50보다 크다.
# 입력: 75
# 75보다 작다.
# 입력 63
# 정답입니다. 3번만에 맞춤.
import random
get_random = random.randint(1,100)
cnt=1
print("1~100 값을 입력해주세요.")
while (True):
in_num = int(input("입력: "))
if(get_random ==in_num):
print(f"정답입니다. {cnt}번만에 맞춤.")
# 1.바로 종료
print("게임을 종료 합니다.")
break;
# 2. 반복, 종료 선택.
# print(f"게임을 다시하시겠습니까?")
# re_game = (input("다시(Y/N): "))
# if(re_game=="Y"):
# get_random = random.randint(1,100)
# cnt=1
# print("1~100 값을 입력해주세요.")
# else:
# print("게임을 종료 합니다.")
# break;
elif(get_random>in_num):
print(f"{in_num}보다 크다.")
else:
print(f"{in_num}보다 작다.")
cnt+=1
# 반복의 흐름을 제어하는 키워드
# 1. break : 반복을 즉시 중단하고 반복문을 탈출하는 키워드
# 2. continue: 반복을 즉시 중단하고 그다음 반복을 수행하는 키워드
# 1~ 10까지의 자연수중 짝수만 출력.
for n in range(1,11):
if(n%2) !=0:
continue
print(n, end=" ")
# cnt = 0;
# while (True):
# cnt += 1
# if(cnt%2==0):
# print(f"{cnt}",end=" ")
# if(cnt==10):
# break
# else:
# continue
# while 도 중첩이 됨.
# 보통 while로 중첩을 잘하지는 않음.
LIST
'일 > Python' 카테고리의 다른 글
파이썬(python) - Project - Macro with GUI (1) | 2022.12.21 |
---|---|
Python) 학습 - 기본3일차(자료구조: list, tuple, dictionary, set) (1) | 2022.12.21 |
Python) 학습 - 기본1일차(variable, input, output) (0) | 2022.12.21 |
파이썬(python) - exe 실행파일 만들기 & Error 처리 (0) | 2021.07.09 |
파이썬(python) - win32com 사용하여, excel file 읽기, 저장, csv로 저장하기 (0) | 2021.07.07 |