2014-01-28 4 views
0

Ваша программа выбирает число, которое нужно угадать, выбрав целое число случайным образом в диапазоне от 1 до 1000 (включительно). Если догадка игрока неверна, ваша программа должна зацикливаться до тех пор, пока игрок, наконец, не получит номер справа. Ваша программа должна сообщать игроку слишком высокую или слишком низкую, чтобы помочь игроку «нуль» в правильном ответе. После окончания игры программа должна попросить пользователя ввести «y» для повторного воспроизведения или «n», чтобы выйти из игры.Python: Number Guessing Game

Моя проблема заключается в том, как вы генерируете новое случайное целое число каждый раз, когда они хотят снова играть?

Вот мой код.

import random 

randomNumber = random.randrange(1, 1000) 

def main(): 
    print "" 
    number = input("I have a number between 1 and 1000. Can you guess my number? Please type your first guess: ") 
    guess(number) 

def guess(number1): 
    correct = False 
    while not correct: 
     if number1 > randomNumber: 
      print "Too high. Try again." 
      print "" 
     elif number1 < randomNumber: 
      print "Too low. Try again." 
      print "" 
     elif number1 == randomNumber: 
      break 
     number1 = input ("What number do you guess? ") 
    if number1 == randomNumber: 
     playAagain = raw_input ("Excellent! You guessed the number! Would you like to play again (y or n)? ") 
     if playAagain == "y": 
      main() 

main() 
+1

Возможно, вы захотите не называть функцию 'main' внутри функции' guess'. Это называется рекурсией (поскольку это функция 'main', называемая функцией' guess') и может привести к сбою вашей программы. Выясните, как заменить его на цикл. –

ответ

1

Поместите петлю в main() и инициализировать randomNumber в начале цикла.

4

Возьмите эту линию:

randomNumber = random.randrange(1, 1000) 

и поместите его в guess:

import random 

def main(): 
    print "" 
    number = input("I have a number between 1 and 1000. Can you guess my number? Please type your first guess: ") 
    guess(number) 

def guess(number1): 
    ######################################### 
    randomNumber = random.randrange(1, 1000) 
    ######################################### 
    correct = False 
    while not correct: 
     if number1 > randomNumber: 
      print "Too high. Try again." 
      print "" 
     elif number1 < randomNumber: 
      print "Too low. Try again." 
      print "" 
     elif number1 == randomNumber: 
      break 
     number1 = input ("What number do you guess? ") 
    if number1 == randomNumber: 
     playAagain = raw_input ("Excellent! You guessed the number! Would you like to play again (y or n)? ") 
     if playAagain == "y": 
      main() 

main() 

Теперь новое случайное число будет создаваться каждый раз при вызове функции.

1

пожалуйста, попробуйте это удалить четыре пробела, начиная с случайным запуск в то время как петля

import random 

print " welcome to game of guessing " 
print "you have 6 attempts" 
num1 = random.randint(1,100) 
print num1 # this is your computer generated number (skip while running :only for test purpose) 
num2 = num1+random.randint(1,15) 
print " hint: number is close to " + str(num2) 

count=1 

пока рассчитывать < = 6: печать "введите номер, который вы думаете," inputnum = raw_input() если inputnum = = Str (num1): печать "Congrats вы угадать правильный номер" перерыв

elif inputnum<str(num1): 
    print " number is lower than correct one " 
    count=count+1 
elif inputnum>str(num1): 
    print "number is greater than correct one" 
    count=count+1 
else: 
    break 
0

вы просто должны определить вас Функция r main() подобна этому.

def main(): 

    global randomNumber 
    print "" 
    randomNumber = random.randrange(1, 1000) 
    number = input("I have a number between 1 and 1000. Can you guess my number? Please type your first guess: ") 
    guess(number) 

И все будет идеально. Надеюсь это поможет.