【问题标题】:My While loop isn't working in python我的 While 循环在 python 中不起作用
【发布时间】:2015-11-01 17:39:20
【问题描述】:

我的 while 循环没有重复,即使哨兵值没有达到打破循环的要求。请帮助。在我看来,while 循环不应该中断,直到可变的计算机编号等于数字

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") 

【问题讨论】:

  • 这是您的代码实际缩进的方式,还是只是在 SO 中粘贴的方式?
  • 已粘贴,缩进正确
  • 修复缩进,使其与您正在运行的内容相同。你在这里的东西不会运行,它只会抛出一个缩进错误。
  • 您粘贴的代码在 while 循环中包含语法错误。如果这是您的错误,那么错误消息应该是有用且简单明了的。

标签: python


【解决方案1】:
  1. computernumber=random.randint(1,100)这将在每次迭代中采用范围(1,100)内的随机数。这就是为什么你不应该把它放在你的循环中

  2. break in 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")

【讨论】:

  • 谢谢我没有注意到我 13 才刚刚开始 python
【解决方案2】:

我必须修改您程序中的一些内容才能使其正常工作。我为随机数添加了一个函数,并为匹配添加了一个 M 选项,因此循环结束。我还需要将输入函数更改为 raw_input。这是因为 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")

【讨论】:

    猜你喜欢
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2021-11-24
    • 2011-10-19
    相关资源
    最近更新 更多