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 == []意味着在字段中没有输入,但是它没有像我想象的那样工作。你能帮忙吗?
答案 0 :(得分:1)
data
是一个字符串,永远不会等于[]
,这是一个列表。试试data.strip() == ""
。
编辑:我刚想到你可能想要使用sys.stdin.readlines()
,其中 返回一个列表。但我强烈建议您遵循@Zack关于CGI的建议而不是“修复”这个问题。
答案 1 :(得分:1)
sys.stdin.read()
将为您提供一个空的字符串,因此data == []
应为
data == ''
。
无效输入的消息可能最好放在您已经拥有的except:
子句中(您需要稍微重新排列控制流,以便与数字检查部分一起排除)。
另外,您可能会发现the cgi
module对您正在做的事情很有用。