따라하며 배우는 파이썬과 데이터과학 -4. 조건을 따져 실행해보자
1. 프로그램의 기본 제어 구조는 크게 세 가지가 있다
순차 구조(sequence) - 여러 명령이 순차적으로 실행되는 구조
선택 구조(selection) - 여러 개 중 하나의 명령문을 선택하여 실행하는 구조
반복 구조(iteration) - 동일한 명령이 반복되면서 실행되는 구조
2. 왜 선택 구조가 필요한가
프로그램의 어떤 단계에서는 진행할 수 있는 경로가 하나 이상인 경우가 있어서
3. 조건이 맞을 때만 실행되는 if 문
조건식(condition expression): 어떤 조건(condition)을 만족하는지 그렇지 않은지 판정하는 식
4. 들여쓰기가 아주 중요한 파이썬: 블록은 들여쓰기로 완성
하나의 블록에 속하는 문장들은 모두 같이 실행됨
speed = int(input("속도를 입력하세요: "))
if(speed >= 30):
print("과속입니다. 속도를 줄이세요.")
5. 배타적 조건에 따라 실행하는 if-else 문
조건식 뒤에는 일반적으로 콜론(:)이 있음 콜론은 파이썬 인터프리터에 "전체 문장이 아직 끝나지 않았으니 잠시 해석을 미뤄달라. 다음에는 문장이 딸린 코드 블록이 나타날 것이다 라고 요청하는 기호.
배타적 조건(exclusive condition)이 되면 if-else 문으로 표현 가능함
예를들어서 오전이면서 오후인 것은 없으니
speed = int(input("속도를 입력하세요: "))
if(speed >= 30):
print("과속입니다. 속도를 줄이세요.")
else:
print("안전운전하세요.")
6. if-else 문으로 다양한 코드를 작성해보자
if-else 내부에 if-else를 넣을 수도 있음
number = int(input("정수를 입력하시오: "))
if number < 0:
print("음수입니다.")
else:
print("음수가 아닙니다.")
game_score = int(input("게임 점수를 입력하세요.: "))
if game_score < 10000:
print("입문자입니다.")
else:
print("고수입니다.")
a = int(input("첫번째 정수를 입력하세요.: "))
b = int(input("두번째 정수를 입력하세요.: "))
if a == b:
print("두 값이 일치합니다.")
else:
print("두 값이 일치하지 않습니다.")
import turtle
t = turtle.Turtle()
t.shape('turtle')
t.penup()
t.goto(100, 100)
t.write("거북이가 여기로 오면 양수입니다.")
t.penup()
t.goto(100, 0)
t.write("거북이가 여기로 오면 0입니다.")
t.penup()
t.goto(100, -100)
t.write("거북이가 여기로 오면 음수입니다.")
t.goto(0, 0)
t.pendown()
s = int(turtle.textinput(" ", "숫자를 입력하시오: "))
if s < 0:
t.goto(100, 100)
elif s == 0:
t.goto(100, 0)
else:
t.goto(100, -100)
turtle.done() #turtle 창이 죽지 않게 해줌
import turtle
t = turtle.Turtle()
t.shape('turtle')
t.penup()
t.goto(-100, 100)
t.write("첫번째 수만 움수.")
t.penup()
t.goto(100, 100)
t.write("두 수 모두 양수.")
t.penup()
t.goto(-100, -100)
t.write("두 수 모두 음수.")
t.penup()
t.goto(100, -100)
t.write("두번째 수만 음수.")
t.goto(0, 0)
t.pendown()
num1 = int(turtle.textinput(" ", "첫번째 숫자를 입력하시오: "))
num2 = int(turtle.textinput(" ", "두번째 숫자를 입력하시오: "))
if num1 > 0:
if num2 > 0:
t.goto(100, 100)
else:
t.goto(100, -100)
else:
if num2 > 0:
t.goto(-100, 100)
else:
t.goto(-100, -100)
turtle.done() #turtle 창이 죽지 않게 해줌
import turtle
t = turtle.Turtle()
t.shape('turtle')
t.penup()
t.goto(-100, 0)
t.write("x가 더 큽니다.")
t.penup()
t.goto(0, 100)
t.write("두 수가 같습니다.")
t.penup()
t.goto(100, 0)
t.write("y가 더 큽니다.")
t.goto(0,0)
t.pendown()
x = int(turtle.textinput(" ", "첫번째 수를 입력하시오: "))
y = int(turtle.textinput(" ", "두번째 수를 입력하시오: "))
if x > y:
t.goto(100,0)
elif x == y:
t.goto(0,100)
else:
t.goto(-100, 0)
turtle.done()
age = int(input("나이를 입력하세요: "))
if age >= 15:
print("본 영화를 보실 수 있습니다.")
else:
print("본 영화를 보실 수 없습니다.")
age = int(input("나이를 입력하세요: "))
if age >= 15:
print("본 영화를 보실 수 있습니다.")
print("영화의 가격은 10000원입니다.")
else:
print("본 영화를 보실 수 없습니다.")
print("다른 영화 보시겠어요?")
card = input("카드의 종류를 입력해주세요: ")
if card == "청소년":
print("청소년입니다.")
else:
print("승인되었습니다.")
import turtle
t = turtle.Turtle()
t.shape('turtle')
t.width(3)
t.shapesize(3, 3)
while True:
a = input("방향을 입력하세요: ")
if a == 'l':
t.left(90)
t.forward(100)
elif a == 'r':
t.right(90)
t.forward(100)
import turtle
t = turtle.Turtle()
t.shape('turtle')
t.width(3)
t.shapesize(3, 3)
while True:
a = input("방향을 입력하세요: ")
if a == 'l':
t.left(90)
t.forward(100)
elif a == 'r':
t.right(90)
t.forward(100)
elif a == 'f':
t.forward(100)
elif a == 'h':
t.shapesize(10, 10)
elif a == 'n':
t.shapesize(3, 3)
import turtle
t = turtle.Turtle()
t.shape('turtle')
t.width(3)
size = int(input("거북이의 크기를 입력하세요(1 - 9): "))
t.shapesize(size, size)
while True:
a = input("방향을 입력하세요: ")
if a == 'l':
t.left(90)
t.forward(100)
elif a == 'r':
t.right(90)
t.forward(100)
elif a == 'f':
t.forward(100)
elif a == 'h':
t.shapesize(10, 10)
elif a == 'n':
t.shapesize(3, 3)
import turtle
import random
t = turtle.Turtle()
t.shape('turtle')
r = random.randrange(2)
if r == 0:
t.right(90)
t.forward(50)
else:
t.left(90)
t.forward(50)
r = random.randrange(2)
if r == 0:
t.right(90)
t.forward(50)
else:
t.left(90)
t.forward(50)
r = random.randrange(2)
if r == 0:
t.right(90)
t.forward(50)
else:
t.left(90)
t.forward(50)
r = random.randrange(2)
if r == 0:
t.right(90)
t.forward(50)
else:
t.left(90)
t.forward(50)
r = random.randrange(2)
if r == 0:
t.right(90)
t.forward(50)
else:
t.left(90)
t.forward(50)
r = random.randrange(2)
if r == 0:
t.right(90)
t.forward(50)
else:
t.left(90)
t.forward(50)
r = random.randrange(2)
if r == 0:
t.right(90)
t.forward(50)
else:
t.left(90)
t.forward(50)
r = random.randrange(2)
if r == 0:
t.right(90)
t.forward(50)
else:
t.left(90)
t.forward(50)
r = random.randrange(2)
if r == 0:
t.right(90)
t.forward(50)
else:
t.left(90)
t.forward(50)
r = random.randrange(2)
if r == 0:
t.right(90)
t.forward(50)
else:
t.left(90)
t.forward(50)
r = random.randrange(2)
if r == 0:
t.right(90)
t.forward(50)
else:
t.left(90)
t.forward(50)
year = int(input("연도를 입력하세요: "))
if (year % 4 == 0 and year %100 != 100) or year % 400 == 0:
print(year,"년은 윤년입니다.")
else:
print(year, "년은 윤년이 아닙니다.")
import random
player1 = input("Player1의 이름: ")
player2 = input("Player2의 이름: ") #리스트? 맵? 같은 것을 이용하여 하나의 객체에 이름과 숫자를 다 넣을 수 있다면 더 효율적읽 것
print("......주사위를 굴립니다......")
player1_num = random.randint(1,6)
player2_num = random.randint(1,6)
print(player1,"의 주사위 번호는",player1_num)
print(player2,"의 주사위 번호는",player2_num)
if player1_num > player2_num :
print(player1,"이 이겼습니다." )
elif player1_num < player2_num:
print(player2,"이 이겼습니다.")
else:
print("비겼습니다.")
r = 5
while True:
x, y = input("점의 x, y좌표를 입력하시오: ").split()
x, y =float(x), float(y)
if r >= (x**2 + y**2) ** 0.5:
print("원의 내부에 있음")
else:
print("원의 외부에 있음")
map(자료형/함수, iterable[, , , , , ,])
r = 5
while True:
x, y = input("점의 x, y좌표를 입력하시오: ").split()
x, y =float(x), float(y)
if r**2 >= (x-3)**2 + (y-4)**2:
print("원의 내부에 있음")
else:
print("원의 외부에 있음")
7. 조건이 거짓일 때 연속하여 다른 조건을 검사
elif 조건이 거짓일 때 다음 조건을 검사하는 것
8. if-else 문 안에 if-else 문 넣기
중첩 if문
ID = 'ilovepython'
while True:
userID = input("아이디를 입력하사오: ")
if ID == userID:
print("환영합니다.")
else:
print("아이디를 찾을 수 없습니다.")
ID = 'ilovepython'
PW = 'mypass1234'
while True:
userID = input("아이디를 입력하사오: ")
userPW = input("패스워드를 입력하시오: ")
if ID != userID and PW != userPW:
print("아이디와 비밀번호 모두 틀렸습니다.")
elif ID != userID:
print("아이디를 찾을 수 없습니다.")
elif PW != userPW:
print("비밀번호를 찾을 수 없습니다.")
else:
print("환영합니다.")
import random
user = input("어디를 공격하시겠어요?(왼쪽, 중앙, 오른쪽) : ")
if user == "왼쪽":
user_num = 0
elif user == "중앙":
user_num = 1
elif user == "오른쪽":
user_num = 2
rand_num = random.randrange(3)
if rand_num == 0:
rand = "왼쪽"
elif rand_num == 1:
rand = "중앙"
elif rand_num == 2:
rand = "오른쪽"
if rand_num == user_num:
print("공격에 실패하셨습니다.")
print("컴퓨터의 수비위치 : ", rand)
else:
print("축하합니다!! 공격에 성공하셨습니다.")
print("컴퓨터의 수비위치 : ", rand)
그냥 random 함수로 숫자로 바꾼 것을 바로 왼 중 오 로 바꾼 후에 바로 비교해도 괜찮을듯하다
import random
user = input("어디를 공격하시겠어요?(왼쪽, 중앙, 오른쪽) : ")
options = ['왼쪽', '중앙', '오른쪽']
computer_choice = random.choice(options)
if computer_choice == user:
print("공격에 실패하셨습니다.")
print("컴퓨터의 수비위치 : ", computer_choice)
else:
print("축하합니다!! 공격에 성공하셨습니다.")
print("컴퓨터의 수비위치 : ", computer_choice)
import turtle
t = turtle.Turtle()
t.shape('turtle')
diagram = turtle.textinput(" ", "도형을 입력하시오: ")
if diagram == "사각형":
width = int(turtle.textinput(" ","가로를 입력하시오: "))
length = int(turtle.textinput(" ", "세로를 입력하시오: "))
t.forward(width)
t.left(90)
t.forward(length)
t.left(90)
t.forward(width)
t.left(90)
t.forward(length)
elif diagram == "삼각형":
width = int(turtle.textinput(" ", "변을 입력하시오: "))
t.forward(width)
t.left(120)
t.forward(width)
t.left(120)
t.forward(width)
elif diagram == "원":
radius = int(turtle.textinput(" ", "반지름을 입력하시오: "))
t.circle(radius)
https://m.blog.naver.com/okkam76/221291624844
[파이썬 수학] 원 그리기 ③ -터틀: turtle.circle과 turtle.dot 차이
지난 2월부터 시작했으니 파이썬을 공부한 지도 4개월이 넘어가네요. 처음에는 객체 개념이 뭔지도 이해가 ...
blog.naver.com
dot은 지금 있는 시점을 기준으로 원을 그리고 색깔을 채울 수 있음 또한 지름을 인수로 받음 circle은 반지름