1. If 조건문
Python에서 조건문을 사용하는 형식은 아래와 같다.
if 조건이되는문장:
조건이 만족될 때 출력되는 값
예시를 통해 살펴보자.
#간단한 조건문 예시(참(위), 거짓(아래))
if 10 > 5:
print("Correct!")
#출력:Correct!
if 10 < 5:
print("Correct!")
#출력: (아무것도 출력되지 않음)
변수를 사용할 경우에는 변수의 값을 미리 지정해 준 후 조건문에 사용할 수 있다.
a = "Sophie"
if a == "Sophie"
print("True!")
#출력: True!
위의 예시에서 단일부등호(=)와 이중부등호(==)의 차이는
단일부등호는 변수의 값을 지정할 때 사용하며
이중부등호는 값이 같다는 것을 나타낼 때 사용한다는 점이다
2. Else
if 조건문이 참이 아닐 경우에 특정한 값이 출력되길 원한다면 else를 사용하면 된다. else는 선택사항이기 때문에 항상 사용할 필요는 없다.
password_correct = True
if password_correct:
print("Here is your money")
else:
print("Wrong password")
#출력 Here is your money
3. Elif
2개 이상의 조건문을 사용하고 싶을 때는 Elif를 사용하면 된다.
주의할 점은, Elif를 사용했을 때 첫 번째와 세 번째 조건이 모두 참일 경우
먼저 오는 참의 조건에 해당하는 값이 실행되고나면 조건문은 종료된다.
왜냐하면 어떤 한 조건이 true가 되는 순간,
파이썬은 즉시 그 안쪽 코드를 실행할 뿐 나머지는 확인하지 않기 때문이다.
winner = 10
if winner > 10:
print("Winner is greater than 10")
elif winner < 10:
print("Winner is less than 10")
else:
print("Winner is 10")
#출력: Winner is 10
4. 부등호
> 크다
< 작다
>= 크거나 같다
<= 작거나 크다
== 같다
!= 같지 않다
5. input 함수
input은 오직 하나의 argument만 받는다.
input("How old are you?")
#출력: How old are you?
위의 예시에서 괄호 안의 How old are you?가 인자에 해당하는데, input은 단순히 인자를 프린트하는 것 뿐만 아니라 사용자의 응답을 기다린다.
즉, 결과값으로 How old are you?가 출력되더라도 코드는 계속 실행상태가 된다.
따라서 임의로 코드를 정지하던지, 출력된 How old are you?에 대한 답을 입력해야만 코드가 종료된다.
여기서 사용자가 입력하는 값이 이 함수의 리턴값이 된다.
이 리턴값을 사용하기 위해서 임의의 변수를 지정한 후 print 등의 함수로 사용할 수 있다.
age = input("How old are you?")
print("user answer is", age)
#출력:
How old are you?24
user answer is 24
6. type: int(정수), string(문자)
input은 string을 기본값을 받는다.
따라서 사용자가 입력한 값을 정수로 인식하게 하기 위해서는 int를 사용해야 한다.
age = int(input("How old are you?"))
if age < 18:
print("You can't drink.")
elif age >= 18 and age <= 35:
print("you drink beer!")
elif age == 60 or age == 70:
print("Beer is not good for you.")
else:
print("Go ahead!")
위의 예시처럼 input()함수 앞에 사용한 int를 통해, "사용자가 입력한 값"에서 큰 따옴표를 제거하고 그 안의 정수값만 결과값으로 받아들인다.
이때, 만약 사용자가 숫자가 아닌 글자를 입력하면 오류가 난다.
그렇다면 int를 사용하지 않고 바로 input만 사용하면 어떨까?
결론부터 말하자면 사용자가 숫자로만 입력하면 가능하지만, 문자로 입력하면 잘못된 결과가 도출된다는 것이다.
먼저, input은 string을 받기 때문에 if 조건절에서도 string을 사용해줘야 한다. 그러면 적어도 조건절을 작성할 때는 오류가 나지 않으며, 사용자가 숫자를 입력한다는 전제하에서도 올바른 결과값이 도출된다.
하지만 문제는 사용자가 문자를 입력하면 위의 모든 if,elif 조건절이 모두 거짓이므로 else에 해당하는 "Go ahead!"가 출력된다.
따라서 input에서 사용자가 입력한 값을 숫자로 사용하고 싶을 때는 int를 사용해야한다.
7. Python Standard Library의 기능을 활용해서 랜덤숫자 만들기
내가 입력한 숫자와 pc가 선택한 임의의 숫자를 비교하는 코드를 만들어보려고 한다.
Python에는 input, print, int처럼 기본적으로 제공되는 기능이 존재하는데, Standard Library에서 확인할 수 있다.
Built-in Functions에 나와있는 함수의 경우, 추가적인 과정없이 사용할 수 있다. input, print, int 등이 여기에 해당한다.
이와 달리, 우리가 사용하려는 random기능은 파이썬에 미리 설치되어 있지 않기때문에 import해주는 과정이 필요하다.
random 카테고리에 있는 randint 함수를 사용하기위해from random import randit 라는 코드를 작성해서 모듈(파일)에있는 함수를 가져온 후,
pc_choice를 randint(1,50)라고 지정해서 1과 50 사이의 정수를 랜덤으로 도출되게 한다.
from random import randint
user_choice = int(input("Choose number."))
pc_choice = randint(1,50)
if user_choice == pc_choice:
print("You won!")
elif user_choice > pc_choice:
print("Lower! Computer chose", pc_choice)
elif user_choice < pc_choice:
print("Higher!Computer chose", pc_choice)
8. while
while은 if와 같은 조건절이지만, 조건문이 false가 될 때까지 코드를 계속해서 실행시킨다는 차이점이 있다.
while을 사용하면 위에서 작성한 랜덤숫자 코드를 매번 실행하지 않아도,
이길때까지 반복되게 만들 수 있다.
playing = True라는 변수를 먼저 설정해 준 후, playing이 True인 동안 계속해서 user_choice라는 input 함수가 실행되도록 해준다.
이 때 user_choice 변수의 정의와 if조건문이 반드시 while 함수 안에 들어가야 한다.
또한, "You won!"이 떴을 때, playing=False가 되도록 해서 게임이 종료되게 해준다.