2010-10-13 141 views
1
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>''' 

現在該程序會告訴您,如果您的猜測太低,太高或正確。我想再添加兩條消息,一條是當某人在該字段中沒有輸入任何輸入時。另一個用於輸入無效輸入(比如字符串或其他)而不是數字的人。我的字段 數據== []是爲了在字段中顯示沒有輸入,但它不工作,因爲我認爲。你能幫我嗎?蟒蛇數猜測問題

回答

1

sys.stdin.read()會給你一個空字符串如果沒有輸入,所以data == []應該
data == ''

對於無效輸入的消息可能是最好放在except:子句中,您已經擁有了(您需要重新排列控制流程以便與數字檢查部分排斥)。

另外,你可能會發現the cgi module對你看起來很有用。

+0

我從來沒有聽說過cgi模塊。你能解釋一下嗎? – Josh 2010-10-13 01:16:54

+0

我鏈接到它的文檔。基本上,它會爲你解析HTTP POST數據。 – zwol 2010-10-13 01:19:47

+0

你能告訴我什麼命令是驗證代碼,以確保它是一個有效的輸入。我也應該使用data.strip()嗎? – Josh 2010-10-13 02:02:51

1

data是一個字符串,永遠不會等於[],這是一個列表。嘗試data.strip() == ""

編輯:它剛剛發生在我身上,你可能打算使用sys.stdin.readlines(),其中確實返回一個列表。但不是「修正」這個,我強烈建議你遵循@ Zack有關CGI的建議。