Programming/Python 웹 스크래퍼 만들기

Python while 문 사용해서 랜덤 숫자 맞추기

Security Engineer 2022. 11. 4. 21:00

3.5 while

""" 코드 """ 하면 코드(특히 여러줄)가 해쉬태그 되어 무시가 된다

ctrl + / 과 같다. 이전에 써놧던 코드를 주석처리할때 사용

while 은 if 와 같다, 멈추지 않는다는 부분만 빼면

while True: 
	print("Hi Im True")

Hi Im True 가 무한 출력되는 것을 알 수 있다.

ctrl + c 를 눌러서 멈추자

user가 달려서 20 km 에 도달 하면 멈추는 코드를 작성해본다.

distance = 0 

while distance < 20: 
	print("I'm running:", distance, "km") 
	distance = distance + 1

distance 라는 변수에 distance + 1 을 계속 넣어준다

처음에 distance 는 0 이었지만 1씩 추가하면서 20까지 도달하게 된다

distance = 0+1 → 1

distance = 1+1 → 2

distance = 2+1 → 3

distance = 3+1 → 4

distance = 4+1 → 5

.

.

.

.

distance = 19+1 → 20

while 은 if 처럼 조건문이 true 라면 안쪽 코드가 실행된다.

if 와의 차이점이라면 while 은 조건문이 false 가 될 때까지 코드를 계속 실행한다

만약 if 를 쓰면 조건문을 한번 반복하고 멈춘다.

while 을 사용하면 조건이 false 가 될 때가지 코드가 계속 실행된다.

distance = 21 

if distance <= 20: 
	print("I'm running:", distance, "km") 
else: 
	print('Running complete')

distance 에 21 을 넣으면

출력값으로 else 값

Running complete 가 출력된다.

distance 에 20 이하의 값을 넣으면

출력값으로 if 값

I'm running 20km (혹은 넣은 숫자의 값) 이 출력된다

3.6 Python Casino

기존에 사용했던 코드는 user_choice 가 코드상 먼저 있고, 반복된 코드가 아니라

user 가 숫자를 입력할 때 마다 pc_choice 가 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)

이전에 했던 randint 에서 랜덤 숫자 고르기 코드를 가져와서 약간의 구성을 바꿔준다

user_choice 를 while 문 안에 넣어 코드 실행 시 매번 pc_choice 가 변하지 않게 해준다.

이번에는 while 을 사용해서 user 가 이길 때까지 반복하는 코드를 작성할 것이다.

user 가 이기면 끝나는 코드를 작성해야 한다.

from random import randint 

print('Welcome to Python Casino') 

pc_choice = randint(1,50) 

user_choice = int(input("choose number: ")) 

if user_choice == pc_choice: 
	print("You won!") 
elif user_choice > pc_choice: 
	print("Lower!") 
elif user_choice < pc_choice: 
	print("Higher!")

while은 아래 조건문 부분(playing)이 True 일 때만 동작한다.

만약 user 가 숫자를 맞춰서 while 문이 멈춰야할 때

조건문 부분(playing) 을 False 로 바꾸면 멈춘다.

user_choice 를 while 문 안에 넣어줘야 숫자를 입력해도 무한 반복하지 않고

숫자를 맞출때 까지 choose number (1-100) 이 출력된다.

user_choice = int(input("choose number (1-100): ")) 이 구문을 while 문에서 제외하고

pc_choice = randint(1,100) 밑에다가 붙여보자

숫자 한번 입력시 영원히 while 문이 반복하게 된다

user 가 숫자를 맞출때까지 반복하는 코드가 나왔다.

from random import randint 

print('Welcome to Python Casino') 

pc_choice = randint(1,100) 

playing = True 

while playing: 
	user_choice = int(input("choose number (1-100): ")) 
	if user_choice == pc_choice: 
		print("You won!", pc_choice) 
		playing = False 
	elif user_choice > pc_choice: 
		print("Lower!",pc_choice) 
	elif user_choice < pc_choice: 
		print("Higher!",pc_choice)

 

pc_choice 가 고른 숫자를 알고 싶지 않다면 아래와 같이 pc_choice 를 while 문에서 제외한 코드를 사용한다.

from random import randint 

print('Welcome to Python Casino') 

pc_choice = randint(1,100) 

playing = True 

while playing: 
	user_choice = int(input("choose number (1-100): ")) 
	if user_choice == pc_choice: 
		print("You won!") 
	playing = False 
	elif user_choice > pc_choice: 
		print("Lower!") 
	elif user_choice < pc_choice: 
    	print("Higher!")