如何使我的while循环在Python中工作?

如何使我的while循环在Python中工作?,python,loops,while-loop,Python,Loops,While Loop,这是我的代码: 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!")

这是我的代码:

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!")
当猜到正确的数字时,就会发生这种情况,这是应该发生的

编号:8 猜猜我想的数字是1-10 8 你猜对了! 但是,如果没有正确猜测数字,它只会循环执行elif语句

编号:10 猜猜我想的数字是1-106 太低了。再猜猜!7. 太高了。再猜猜!6. 太高了。再猜猜!5. 太高了。再猜猜!4. 太高了。再猜猜!3. 太高了。再猜猜!2. 太高了。再猜猜!1. 太高了。再猜猜!10 太高了。再猜猜!9 太高了。再猜猜!8.
您是否尝试过在while循环的两个输入行中对输入强制转换int?这似乎对我有用,就像:

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

您是否尝试过在while循环的两个输入行中对输入强制转换int?这似乎对我有用,就像:

if(Random > Number):
    Number = int(input("Too low. Guess again!"))
elif(Number > Random):
    Number = int(input("Too high. Guess again!"))
随机导入
number=random.randint(1,10)
guess=int(输入(“从1-10猜我想的数字”)
而猜!=数字:
如果猜测<数字:
打印(“您的答案太低…”)
其他:
打印(“您的号码太高…”)
guess=int(输入(“请重试…”)
打印(“恭喜!回答正确!”)
您可以将此作为参考。谢谢您…

import random
number=random.randint(1,10)
guess=int(输入(“从1-10猜我想的数字”)
而猜!=数字:
如果猜测<数字:
打印(“您的答案太低…”)
其他:
打印(“您的号码太高…”)
guess=int(输入(“请重试…”)
打印(“恭喜!回答正确!”)

您可以将此作为参考。谢谢…

这是您代码的改进版本:

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!")
随机导入
答案=random.randint(1,10)
打印(“编号:+str(答案))
guess=int(输入(“从1-10猜我想的数字”))
而答案!=猜测:
如果猜测<答案:
guess=int(输入(“太低了,再猜一次!”)
elif guess>答案:
guess=int(输入(“太高了,再猜一次!”)
打印(“你猜对了!”)
关于这些变化的一些评论:

  • 主要是
    int()
    围绕
    input()
    int()
    将值作为字符串获取,但您希望比较数字的值,而不是字符串。例如
    '12'
    但是
    12>2
  • 变量的名称中有大写字母,这在Python中是个坏主意,因为这会向编辑器和其他程序员表明它们是类而不是变量
  • 您的变量
    Random
    与您正在使用的模块名称相同,因此很容易混淆,
    answer
    似乎是一个更好的选择
  • 您的代码缩进了2个空格,但大多数编辑器默认为4,这也符合标准Python风格的准则
  • 与其改变变量的顺序,通常最好让代码读起来尽可能接近它的意思;例如,
    if guess
    正是您所说的:“太低”

这是您的代码的改进版本:

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!")
随机导入
答案=random.randint(1,10)
打印(“编号:+str(答案))
guess=int(输入(“从1-10猜我想的数字”))
而答案!=猜测:
如果猜测<答案:
guess=int(输入(“太低了,再猜一次!”)
elif guess>答案:
guess=int(输入(“太高了,再猜一次!”)
打印(“你猜对了!”)
关于这些变化的一些评论:

  • 主要是
    int()
    围绕
    input()
    int()
    将值作为字符串获取,但您希望比较数字的值,而不是字符串。例如
    '12'
    但是
    12>2
  • 变量的名称中有大写字母,这在Python中是个坏主意,因为这会向编辑器和其他程序员表明它们是类而不是变量
  • 您的变量
    Random
    与您正在使用的模块名称相同,因此很容易混淆,
    answer
    似乎是一个更好的选择
  • 您的代码缩进了2个空格,但大多数编辑器默认为4,这也符合标准Python风格的准则
  • 与其改变变量的顺序,通常最好让代码读起来尽可能接近它的意思;例如,
    if guess
    正是您所说的:“太低”

您需要更多的
int()
s围绕您的
input()
s@StephenRauch我以为你的意思是
int(int(int(int(input())))
暂时:P@OP顺便说一句,不要大写你的变量。@wjandrea取决于你使用的是Python 2还是Python 3。@CS哦,你是对的。我想现在每个人都在使用Python 3,因为Python 2是EOL。你需要更多的
int()
s围绕
input()s@StephenRauch我以为你的意思是
int(int(int(int(input())))
暂时:P@OP顺便说一句,不要大写你的变量。@wjandrea取决于你使用的是Python 2还是Python 3。@CS哦,你是对的。我假设现在每个人都在使用Python 3,因为Python 2是EOL。如果你能解释一下问题代码中的问题以及你在回答中如何解决这些问题,那将更有帮助。这将是非常重要的如果你能解释问题代码中的问题以及你在回答中如何解决这些问题,那将更有帮助。