본문 바로가기

컴퓨터 언어/python

Python 7. LOOP


Loop

Loop 문은 If 문과 비슷하게 진입 조건이 True일 때 속 안의 블록들을 실행시킵니다. 차이는, 그 조건문이 참일 경우에는 지속적으로 반복을 진행한다는 것입니다.

 

count = 0

if count < 5:
  print "Hello, I am an if statement and count is", count
print 5

while count < 5:
  print "Hello, I am a while and count is", count
  count += 1
  
  

"""
Hello, I am an if statement and count is 0
5
Hello, I am a while and count is 0
Hello, I am a while and count is 1
Hello, I am a while and count is 2
Hello, I am a while and count is 3
Hello, I am a while and count is 4
"""

 

Condition

반복문은 다음의 5가지의 단계를 거칩니다.

 

★반복하는 조건의 변수가 True로 설정됩니다. 반복(loop)문은 조건(condition)이 참이라는 것을 확입니다.

프린트 구문을 출력합니다. loop_condition이 False로 변경됩니다.

조건문이 False인것을 확인하고 다음 문장으로 넘어갑니다.

loop_condition = True
while loop_condition:
    print "I am a loop"
    loop_condition = False
print 3

 

이를 이용해 간단한 조건문을 만들어봅시다

problem) 1~10까지의 제곱수를 출력하는 문장을 만들어봅시다

num = 1

while num <= 10:  
  print num ** 2
  num += 1

 

problem)

# -*- coding: utf-8 -*-

choice = raw_input('Y나 N을 누르세요(y/n)')

 

while choice != _____: # 빈칼을 채워주세요

choice = raw_input("Y나 N이 아니네요 다시 눌러주세요")

choice = raw_input('Y나 N을 누르세요(y/n)')

while choice != ('y' or 'n' or "Y" or 'N'): # 빈칼을 채워주세요
  choice = raw_input("Y나 N이 아니네요 다시 눌러주세요")

 

 

Infinite loops

count = 10
while count > 0:
  count += 1
  print count

->Break

Break문은 "exit the current loop."를 의미합니다. 반복문 밖으로 빠져나오는 것에 대해 의미합니다.

count = 0

while True:
  print count
  count += 1
  if count >= 10:
    break

10이상이 된 순가 break문이 생성되며 while문을 빠져나온 것을 보실 수 있습니다.

 

import random

import random

print "3개의 숫자를 생성하겠습니다."
print "3개의 숫자 중에 '5'가 하나만 있으면 당신이 진 것입니다"

count = 0
while count < 3:
  num = random.randint(1, 6)
  print num
  if num == 5:
    print "당신의 패배입니다!"
    break
  count += 1
else:
  print "당신의 승리입니다!"
  
  
 """
 3개의 숫자를 생성하겠습니다.
3개의 숫자 중에 '5'가 하나만 있으면 당신이 진 것입니다
2
3
3
당신의 승리입니다!"""

 

while/else 는 if /else문과 비슷합니다. 차이가 있다면 else문은 반복 조건문이 False가 되는 순간 출력이 된다는 의미입니다. 그러나 조건문이 만약 break로 나오게 된다면 else문은 출력이 되지 않습니다.

 


1. 게임을 시작해봅시다

Use a while loop to let the user keep guessing so long as guesses_left is greater #than zero.

while loop를 이용해 guesses_left가 0 이상일 경우에는 게속 시행되도록 하빈다.

guess를 물어보고 맞다면 “승리”를 출력하고 break합니다

geusses_left 를 1 감소 시킵니다.

from random import randint

# 1~10까지의 숫자를 생성합니다.
random_number = randint(1, 10)

guesses_left = 3
# 게임을 시작해봅시다
#Use a while loop to let the user keep guessing so long as guesses_left is greater #than zero.
#while loop를 이용해 guesses_left가 0 이상일 경우에는 게속 시행되도록 하빈다.
#guess를 물어보고 맞다면 “승리”를 출력하고 break합니다
#geusses_left 를 1 감소 시킵니다.
#만약 반복문을 빠져나오면 “패배”라는 문장을 출력시켜봅시다.
while guesses_left > 0:
  guess = int(raw_input("Your guess: "))
  if guess == random_number:
    print "승리!"
    break
  guesses_left -= 1
else:
    print "패배!"
    
    
 """
 Your guess: 5
Your guess: 5
Your guess: 5
패배!
"""

 

반복문에 또 다른 방법으로는 이미 우리가 배운 For 반복문이 있다는 것을 기억해주세요

print "세는 중"

for i in range(10):
  print i

 

 

2.

 

for문을 이용해 3번 “취미가 무엇입니까?”라고 물어보고 입력을 받는 반복문을 만들고

반복이 종료되면 입력한 취미들을 출력하는 문장을 만들어봅시다.

hobbies = []

 

sol)

hobbies=[]
for num in range(3):
  hobby =  raw_input("취미가 무엇입니까?")
  hobbies.append(hobby)

print hobbies

 

3. char문 뒤에 ,가 붙으면 같은 라인으로 출력이 됩니다.

word = "Marble"
for char in word:
  print char,

M a r b l e 이렇게요

 

phrase = "A bird in the hand..."

for char in phrase:
  if char == "A" or char == 'a':
    print 'X',
  else:
    print char,
print


"""X   b i r d   i n   t h e   h X n d . . ."""

 

 

 

4.

리스트의 값들의 제곱수가 되도록 출력해주세요

numbers = [7, 9, 12, 54, 99]

 

# -*- coding: utf-8 -*-

numbers = [7, 9, 12, 54, 99]


print "이 리스트가 포함하는 것들은"

for num in numbers:
    print num ** 2

 

 

5.

다음 문장을 참조해서 key 값과, value값이 출력이 되도록 해봅시다

d = {'x': 9, 'y': 10, 'z': 20}

for key in d:

if d[key] == 10:

print "이 딕셔너리는 10을 포함하고 있습니다"

 

d = {'a': 'apple', 'b': 'berry', 'c': 'cherry'}

#a apple

#c cherry

#b berry 이렇게요

d = {'a': 'apple', 'b': 'berry', 'c': 'cherry'}

for key in d:
    print key, d[key]

 

 

★enumerate 함수

choices = ['pizza', 'pasta', 'salad', 'nachos']

print '당신의 choices 들은'

for a, b in enumerate(choices):
    print a, b
    
"""
당신의 choices 들은
0 pizza
1 pasta
2 salad
3 nachos"""

enumerate함수를 실행시키면 앞에는 그 수의 index 값이 , 뒤에는 item의 값이 할당되어 출력합니다.

 

problem) 만약에 인덱스를 0,1,2,3 이 아닌 1,2,3,4 로 출력하려면 어떻게 해야할까요?

 

 

Multiple lists : zip

list_a = [3, 9, 17, 15, 19]
list_b = [2, 4, 8, 10, 30, 40, 50, 60, 70, 80, 90]


for a, b in zip(list_a, list_b):
    print a,b
    
"""
3 2
9 4
17 8
15 10
19 30"""

다수의 리스트를 다루는 방식중에 zip이라는 함수가 있습니다.

두 리스트의 작은 크기의 값 까지만 두 개를 비교해주는 함수입니다

3과2, 9와4, 17과 8, 15와 10, 19와 30까지만 출력이됩니다.

 

problem) #둘 중 더 큰 숫자만 출력하려면 어떻게할까요?

 

 

 

'컴퓨터 언어 > python' 카테고리의 다른 글

파이썬 기초 4  (0) 2020.07.15
Python 8. Battleship game  (0) 2020.07.15
파이썬 기초1  (0) 2020.07.15
Python 5: List + Dictinaray + for루프  (0) 2020.07.14
Python 4. 파이썬 함수  (0) 2020.07.14