蟒蛇号猜测问题

时间:2010-10-13 01:10:32

标签: python

import sys

print 'Content-Type: text/html' 
print ''

print '<pre>'
# Read the form input which is a single line
guess = -1 
data = sys.stdin.read()
# print data 
if data == []:
    print "Welcome to Josh's number game"
try:
    guess = int(data[data.find('=')+1:]) 
except:
    guess = -1 
print 'Your guess is', guess 
answer = 42 
if guess < answer :
    print 'Your guess is too low' 
if guess == answer:
    print 'Congratulations!' 
if guess > answer :
    print 'Your guess is too high' 
print '</pre>'
print '''<form method="post" action="/"> 
Enter Guess: <input type="text" name="guess"><br> 
<input type="submit">
</form>'''

现在,该程序会告诉您猜测是否过低,过高或过高。我想再添加两条消息,一条用于当某人没有在该字段中输入任何输入时。另一个用于输入无效输入(如字符串或其他内容)而非数字的人。我的领域 data == []意味着在字段中没有输入,但是它没有像我想象的那样工作。你能帮忙吗?

2 个答案:

答案 0 :(得分:1)

data是一个字符串,永远不会等于[],这是一个列表。试试data.strip() == ""

编辑:我刚想到你可能想要使用sys.stdin.readlines(),其中 返回一个列表。但我强烈建议您遵循@Zack关于CGI的建议而不是“修复”这个问题。

答案 1 :(得分:1)

如果没有输入,

sys.stdin.read()将为您提供一个空的字符串,因此data == []应为
data == ''

无效输入的消息可能最好放在您已经拥有的except:子句中(您需要稍微重新排列控制流,以便与数字检查部分一起排除)。

另外,您可能会发现the cgi module对您正在做的事情很有用。