노는게 제일 좋습니다.

숫자 맞추기 게임(import, if, while, random, 캐스팅,주석) 본문

Python/기타 공부

숫자 맞추기 게임(import, if, while, random, 캐스팅,주석)

노는게 제일 좋습니다. 2016. 1. 27. 17:04

원 코드 출처 Al Sweigart (http://inventwithpython.com/)

 

숫자를 맞추는 게임.

1. 컴퓨터에서 랜덤하게 1~20 사이의 숫자중 하나를 고른다. 이를 n이라 하자.

2. 사람이 6회동안 숫자를 찍어 맞춘다. 이를 a라 하자. 만약 6회가 넘어가면 게임오버.

3. 만약 n<a이면 a가 크다고 표시. n>a이면 a가 작다고 표시. a==b이면 게임승리.


코드를 보지 않고 캐스팅 방법과 random클래스, if와 while의 기술 방법만 참고하여 작성해보았다.

 

본인이 짠 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import random
 
print('Hello! What is your name?')
myName = input()
print('Well, ' + myName +', I am thinking of a number between1 and 20.')
 
number = random.randint(1,20)
answer = 0;
cycle = 0
 
while number != int(answer):
    
    print('Take a guess')
    answer = input()
 
    if int(answer)>number:
        print('Your guess is too high')
    elif int(answer)<number:
        print('Your guess is too low')   
    elif int(answer)==number:
        print('Good job ,'+myName+'! You Guessed my number in '+ str(cycle) +' guesses!')
        break
 
    cycle+=1
 
    if cycle == 6:
        print('You lose. The number is '+str(number))
        break
        
 
cs

 

책의 예제코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import random
 
 
guessesTaken = 0
 
print('Hello! What is your name?')
myName = input()
 
number = random.randint(1,20)
print('Well, '+myName + ', I am thinking of a number betwwen 1 and 20.')
 
while guessesTaken < 6:
    print('Take a guess.')
    guess = input()
    guess = int(guess)
 
    guessesTaken = guessesTaken + 1
 
    if guess < number:
        print('Your guess is too low.')
 
    if guess > number:
        print('Your guess is too high.')
 
    if guess == number:
        break
 
if guess == number:
    guessesTaken = str(guessesTaken)
    print('Good job, '+myName+'! You guessed my number in '+guessesTaken+' guesses!')
 
if guess != number:
    number = str(number)
    print('Nope. The number I was thinking of was '+number)
 
cs

 

두 코드의 차이는, 부분에 따라 역할을 분리했느냐 함께 두었느냐이다.

나는 아예 while문 하나 안에서 반복을 돌다가 프로그램이 종료되도록 했으나

책에서는 while문에서 6회가 채워졌는지 본 다음 while문 종료 이후에 if문으로 정답과 오답을 판별한다.

 

책이 보기 쉬운 것 같다. 쉽게 볼 수 있도록 프로그래밍 하려고 노력해야겠다.

 

 


 

주석 : #뒤에 내용을 쓰면 주석처리된다.

모듈(module) : 관련 함수들을 가지고 있는 독립된 프로그램으로, 일부 함수들은 모듈안에 존재한다.

import : 모듈을 불러오는 구문이다.

randint() : 두 개의 정수 사이에서 하나의 무작위 정수를 반환하는 함수. 두 인자는 콤마(,)로 구분. random모듈에 있다.

 

인자의 전달 : 파이썬에서는 항상 추가로 보이지 않는 인자를 전달한다.

예를 들어, randint함수에 1개의 인자를 전달하면 3개를 취하는데 2개만 전달되었다는 에러가 뜬다.

Comments