2015-11-19 5 views
-6

У меня возникли проблемы с этой программой. Он suposed генерирует случайное целое число от 1 до 1000, но он будет генерировать что-то вроде 627.68969869867986985747640967487598563876586805465097080967576587609787587658976098Guess Number Python 2.7

from random import * 
def main(): 

    numGuess = input ("guess your number") 
    ranNum = randint(8, 100000) 
    while ranNum <> numGuess: 
     print numGuess 
     numGuess = input ("guess your number") 
     print numGuess 
     ranNum = randint(0,1000) 
     if numGuess > ranNum : 
      print("ugg, your number is too big") 
     else: 
      print("whoops, your number is too small") 
     if numGuess == ranNum : 
      print("YAHOO, YOU GOT IT RIGHT!!!!!!!!") 
    main() 

может кто-нибудь сказать мне, почему это не работает (он бежал в Python 2.7 редактор) Кроме того, В первый раз, когда вы вводите свой номер, он не говорит вам, следует ли предполагать, что выше или ниже.

+1

Как вы определить, что он генерирует этот странный вид номер ? Мне трудно полагать, что 'randint' дает вам то, что не является целым числом. Кроме того, можете ли вы правильно отформатировать код? Я как-то сомневаюсь, что ваш главный, конечно, бесконечно рекурсивный. –

+0

Ну, вы спрашиваете пользователя два раза, прежде чем вы когда-нибудь распечатаете, если оно выше или ниже. – csmckelvey

+2

Код, который вы опубликовали, содержит много ошибок, но не тот, который вы описываете. – user2357112

ответ

0

Несколько вещей. Обычно вы не должны использовать * в своих импортированных Python (from module import *). Если вы используете только одну функцию из модуля, это намного безопаснее, и ваш код будет более понятным, если вы используете from random import randint.

Вы переназначаете свой ranNum после первого предположения. Ваша первая предпосылка может измениться на правильный ответ, как только ranNum был переназначен на новое значение.

Кроме того, ваше описание говорит, что вы ищете, чтобы сгенерировать случайное число в диапазоне от 1 до 1000, но ваша первая уступка ranNum является ranNum == randint(8, 10000) и что будет генерировать случайные Int между 8 и 10000.

Мое предложение удалите присвоения имен, которые находятся за пределами цикла, и измените ваше условие на while True:, затем в вашей логике if numGuess == ranNum:, добавьте оператор break, чтобы разбить цикл внутри main().

Что касается вашего вопроса, я не верю, что вы получаете такой длинный результат, как тот, который вы предоставили с помощью randint(). Есть ли часть вашего кода, которую вы оставили?

0

Несколько вещей либо ненужными, либо сделано неправильно, следующее является модификацией вашего решения с некоторыми изменениями:

from random import * 
def main(): 

    numGuess = -1 
    ranNum = randint(1, 1000) 
    while ranNum <> numGuess:   
     numGuess = input ("guess your number") 
     print numGuess   
     if numGuess > ranNum : 
      print("ugg, your number is too big") 
     elif numGuess < ranNum: 
      print("whoops, your number is too small") 
     else: 
      print("YAHOO, YOU GOT IT RIGHT!!!!!!!!") 
main() 
  • вы просите для ввода пользователя в два раза в начале из-за избыточно звонить до цикла в то время как
  • вызов ranNum = randint(8, 100000) - не нужен
  • вы хотите сделать ranNum = randint(0,1000) только один раз, прежде чем начать цикл
  • Условный/еще/если механизм - может быть улучшена (см выше)
0

Попробуйте это, только скорректированный в коде ..

from random import * 
def main(): 

    numGuess = 1 
    ranNum = 10 
    while ranNum <> numGuess: 
     ranNum = randint(1,1000) 
     numGuess = input ("guess your number") 
     #print ranNum, "random" 
     if numGuess > ranNum : 
      print("ugg, your number is too big") 
     elif numGuess < ranNum: 
      print("whoops, your number is too small") 
     else: 
      print("YAHOO, YOU GOT IT RIGHT!!!!!!!!") 
main() 
Смежные вопросы