2015-11-01 3 views
-3

Мой цикл while не повторяется, даже если значение часового не выполнено, чтобы разбить цикл. Пожалуйста help.The в то время как петля выглядит мне нравится, чтобы не нарушать, пока varaiable computernumber равно числуMy While loop не работает в python

import random 
print("Hello and welcome to the AI guessing Game pick a number from 1 to 100 then press H or L to give the clue") 
number=input("pick a number from 1 to 100") 
number=int(number) 
tries = 0 
computernumber=1 
while computernumber !=(number): 
    computernumber=random.randint(1,100) 
    print (computernumber) 
    higherorlower=input("is your number higher or lower use H or L please!") 
    if higherorlower == "H": 
     computernumber +=1 
     tries = int(tries) 
     tries +=1 
     computernumber=random.randint (computernumber,number) 
    else: 
      computernumber -=1 
      computernumber=random.randint (1,computernumber) 
      tries = 0 
      tries = int(tries) 
      tries +=1 
      print (computernumber) 

      break 

if computernumber == number: 

    if tries == 1 or 0: 

     print("Your number was", number,"and it took me",tries,"Try") 
    else: 
     print("Your number was", number,"and it took me",tries,"Tries") 
+0

Это так, как вы на самом деле закодированы, или просто как он был вставлен в SO? – Mureinik

+0

было вставлено вложение правильно. – Slothatrongaming

+0

Исправьте отступ, чтобы он был идентичен тому, что вы используете. То, что у вас здесь, не будет работать, оно просто выдаст ошибку с отступом. – interjay

ответ

0
  1. computernumber=random.randint(1,100) это будет иметь случайное число в диапазоне (1,100) в каждой итерации .. Вот почему ты не должен помещать его в вашу петлю

  2. break в else разрывает петлю. вот почему ваша петля не повторяется.

Модифицированный код:

import random 
print("Hello and welcome to the AI guessing Game pick a number from 1 to 100 then press H or L to give the clue") 
number=input("pick a number from 1 to 100 :") 
number=int(number) 
tries = 0 
computernumber=1 

# Bring it outside of your loop. 
computernumber=random.randint(1,100) 

while computernumber !=(number): 
    print (computernumber) 
    higherorlower=input("is your number higher or lower use H or L please!") 
    if higherorlower == "H": 
     computernumber +=1 
     tries = int(tries) 
     tries +=1 
     computernumber=random.randint (computernumber,number) 
    else: 
      computernumber -=1 
      computernumber=random.randint (1,computernumber) 
      tries = 0 
      tries = int(tries) 
      tries +=1 

      # Do not use break here 
      #break 

if computernumber == number: 
    if tries == 1 or 0: 

     print("Your number was", number,"and it took me",tries,"Try") 
    else: 
     print("Your number was", number,"and it took me",tries,"Tries") 
+0

Спасибо, я не заметил im 13 только что начал python – Slothatrongaming

0

мне пришлось изменить несколько вещей в вашей программе, чтобы заставить его работать. Я добавил функцию для случайного числа и добавил параметр M для соответствия, чтобы конец цикла завершился. Мне также нужно было изменить функцию ввода на raw_input. Это связано с тем, что ввод изменяет содержимое, тогда как raw_input получает вход точно так же, как и набранный.

import random 

def getRandomNumber(minimum, maximum): 
    return random.randint(minimum, maximum) 

print("Hello and welcome to the AI guessing game. Pick a number from 1 to 100 then press H or L to give the clue.\n") 

number = int(raw_input("Pick a number from 1 to 100: ")) 
tries = 0 
computernumber = 0 

# min and max random numbers initially 
minimum = 1 
maximum = 100 

while computernumber != number: 
    tries = tries + 1 
    computernumber = getRandomNumber(minimum, maximum) 

    print (computernumber) 

    higherorlower = str(raw_input("Is your number higher, lower, or a match? Use H, L, or M please! ")) 

    if higherorlower == "H": 
    computernumber +=1 
    minimum = computernumber 
    maximum = number 
    elif higherorlower == "L": 
    computernumber -=1 
    minimum = 1 
    maximum = computernumber 
    elif higherorlower == "M": 
    computernumber = number # this ends the loop on a match 

if computernumber == number: 
    if tries == 1 or 0: 
    print("Your number was", number,"and it took me",tries,"Try") 
    else: 
    print("Your number was", number,"and it took me",tries,"Tries") 
Смежные вопросы