【问题标题】:python number guessing questionpython猜数字题
【发布时间】:2010-10-13 01:10:32
【问题描述】:
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 == [] 意味着在该字段中不显示任何输入,但它不像我想的那样工作。你能帮忙吗?

【问题讨论】:

    标签: python


    【解决方案1】:
    如果没有输入,

    sys.stdin.read() 会给你一个空的字符串,所以data == [] 应该是
    data == ''

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

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

    【讨论】:

    • 我从未听说过 cgi 模块。你能再解释一下吗?
    • 我链接到它的文档。基本上,它会为你解析 HTTP POST 数据。
    • 你能告诉我验证代码的命令是什么,以确保它是一个有效的输入。我也应该使用 data.strip() 吗?
    • 另外,感谢您发布的第一篇文章。我还没有让它发挥作用,但我认为我正朝着正确的方向前进。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-02-22
      • 2016-06-21
      • 2021-04-03
      • 2013-10-09
      • 2018-10-14
      • 2015-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多