在python3中循环时工作

时间:2016-12-11 14:48:59

标签: python-2.7 python-3.x while-loop

这个脚本在python2中工作但在python3中不工作,即使我输入了正确的答案,输入问题仍然显示:

correct = "no"
while correct == "no":
    answer = input("15 x 17? ")
    if answer == 15*17:
        correct = "yes"
        print 'good!' #for python2
    else:
        correct = "no"

如何在不使用和使用功能的情况下解决这个问题?

2 个答案:

答案 0 :(得分:0)

在Python 3中input返回一个字符串(在Python 2 input中评估输入),因此answer == 15*17将永远不会为真,除非您将answer转换为int或{ {1}}为字符串。

此外,12*17不是有效的Python 3语法,因为print "good"是一个函数:print

答案 1 :(得分:0)

为了在Py2.7和Py3中使用,语言版本之间存在一些差异 - 请参阅What’s New In Python 3.0

    py3中的
  • input()相当于py2
  • 中的raw_input()
  • print不再是py3中的语句,而是函数

要使这段代码在py2.7和py3上都能正常工作,你可以这样做:

from __future__ import print_function
try:
    input = raw_input
except NameError:
    pass

while True:
    answer = int(input("15 x 17? "))
    if answer == 15*17:
        print('good!')
        break