Как заставить мое время l oop работать в Python? - PullRequest
1 голос
/ 23 января 2020

Это мой код:

import random
Random = random.randint(1, 10)
print("Number:" + str(Random))
Number = int(input("Guess the number I am thinking of from 1-10"))
while int(Random) != Number:
  if(Random > Number):
    Number = input("Too low. Guess again!")
  elif(Number > Random):
    Number = input("Too high. Guess again!")
print("You guessed it!")

Когда угадывается правильное число, это происходит, что и должно произойти.

Number:8
Guess the number I am thinking of from 1-10 8
You guessed it!

Но когда число не не угадал, он зацикливается только на операторе elif.

Number:10
Guess the number I am thinking of from 1-10 6
Too low. Guess again! 7
Too high. Guess again! 6
Too high. Guess again! 5
Too high. Guess again! 4
Too high. Guess again! 3
Too high. Guess again! 2
Too high. Guess again! 1
Too high. Guess again! 10
Too high. Guess again! 9
Too high. Guess again! 8

Ответы [ 3 ]

0 голосов
/ 23 января 2020
import random
number=random.randint(1,10)
guess=int(input("Guess the number I am thinking of from 1-10")
while guess !=number:
    if guess < number:
       print("Your answer was too low...")
    else:
       print("Your number was too high...")
    guess= int(input("Please try again...")
print("Congratulations! Correct answer!")

Вы можете использовать это в качестве ссылки. спасибо ...

0 голосов
/ 23 января 2020

Это улучшенная версия вашего кода:

import random

answer = random.randint(1, 10)
print("Number:" + str(answer))
guess = int(input("Guess the number I am thinking of from 1-10"))
while answer != guess:
    if guess < answer:
        guess = int(input("Too low. Guess again!"))
    elif guess > answer:
        guess = int(input("Too high. Guess again!"))
print("You guessed it!")

Некоторые замечания об изменениях:

  • Главное - это int() вокруг input(). input() возвращает вам значение в виде строки, но вы хотите сравнить значения чисел, а не строк. Например, '12' < '2', но 12 > 2.
  • В именах ваших переменных есть заглавные буквы, это плохая идея в Python, поскольку это сигнализирует редакторам и другим программистам, что они классы, а не переменные.
  • Ваша переменная Random имеет то же имя, что и модуль, который вы используете, что позволяет легко запутаться, answer кажется лучшим выбором.
  • Ваш код был с отступом в 2 пробела, но большинство редакторов по умолчанию имеют значение 4, и это также соответствует стандартным рекомендациям по стилю Python.
  • Вместо того, чтобы переключать порядок переменных, часто лучше, чтобы ваш код читался как можно ближе к что это означает; например, if guess < answer - это именно то, что вы говорите: «слишком низко».
0 голосов
/ 23 января 2020

Вы пытались наложить int на вход в обеих строках ввода, пока l oop? Кажется, это работает для меня, когда это похоже на:

if(Random > Number):
    Number = int(input("Too low. Guess again!"))
elif(Number > Random):
    Number = int(input("Too high. Guess again!"))
...