循环,直到特定的用户input

我正在尝试编写一个猜数字的程序如下:

def oracle(): n = ' ' print 'Start number = 50' guess = 50 #Sets 50 as a starting number n = raw_input("\n\nTrue, False or Correct?: ") while True: if n == 'True': guess = guess + int(guess/5) print print 'What about',guess, '?' break elif n == 'False': guess = guess - int(guess/5) print print 'What about',guess, '?' break elif n == 'Correct': print 'Success!, your number is approximately equal to:', guess 

甲骨文()

我现在要做的是得到这个if / elif / else命令的循环,直到用户input'Correct',即当程序声明的数字大约等于用户数量,但是如果我不知道用户数我想不出如何实现,如果声明,我试图使用'while'也不起作用。

作为@Mark Byers方法的替代,你可以使用while True

 guess = 50 # this should be outside the loop, I think while True: # infinite loop n = raw_input("\n\nTrue, False or Correct?: ") if n == "Correct": break # stops the loop elif n == "True": # etc. 

你的代码不会工作,因为在第一次使用它之前,你还没有分配任何东西给n 。 尝试这个:

 def oracle(): n = None while n != 'Correct': # etc... 

更可读的方法是移动testing,直到以后再使用break

 def oracle(): guess = 50 while True: print 'Current number = {0}'.format(guess) n = raw_input("lower, higher or stop?: ") if n == 'stop': break # etc... 

在Python 2.x中input也会读取一行input,然后对其进行评估 。 你想使用raw_input

注意:在Python 3.x中, raw_input已被重命名为input ,旧的input方法不再存在。