2014-03-24 35 views
1

我新的Python這樣原諒任何代碼很差,你會發現字符串不會比正常

我遇到的問題是,我想比較兩個字符串,一個從文件和一個從用戶輸入,看他們是否匹配。但是,在比較看起來相同的字符串時,if語句返回false。我已經使用str()函數將這兩個值轉換爲字符串,但它仍然不想玩球。

作爲參考,文件的行是兩個字符串,用逗號分隔,'問題'部分在逗號和之後的'答案'之前。目前,這兩個字符串是測試字符串,所以有「問題」和「答案」

import linecache 
def askQuestion(question, answer): 
    choice = input(question) 
    str(choice) 
    if choice == answer: 
     print("Correct") 
    else: 
     print("Bad luck") 
file = "C://questions.txt" 
text = linecache.getline(file, 1) 
question = text.split(",", 1)[0] 
answer = text.split(",", 1)[-1] 
str(answer) 
askQuestion(question, answer) 

的我打字的正是該文件已在正確的地方,即大寫字母的值,做筆記。 我敢肯定,答案很明顯,但我很茫然,所以任何幫助,將不勝感激。

謝謝!

+0

'str(選擇)'返回一個字符串,你扔掉了 - 它不會原地改變'choice'。你可以用'choice = str(choice)'來代替。你的程序可能比那個缺陷更多。 – roippi

+2

也許Python在每行的末尾檢測換行符('\ n')。嘗試做'answer.strip()'。 –

回答

2
text = linecache.getline(file, 1) 
question = text.split(",", 1)[0] 
answer = text.split(",", 1)[-1] 

這是比較常用的書面

text = linecache.getline(file, 1) 
question, answer = text.split(",", 1) 

結果將是一個字符串。沒有解釋發生。另外,您需要存儲str()的結果。

my_string = str(number) 

通過調用str()但未保存結果正在丟失。這裏不重要,但要記住。

由於Alex在上面的評論中提到您錯過了撥打strip的電話以刪除換行符。我怎麼知道?我在口譯員那裏試過。

$ python 
>>> import linecache 
>>> line = linecache.getline("tmpfile", 1) 
>>> line 

'*聯繫人號碼\ n'

請參閱 '\ n' 呢?那是你的問題。

另一種方法是調用pdb Python調試器。只需添加

import pdb; pdb.set_trace() 

您希望停止執行Python腳本的位置。

祝你好運。

+0

非常感謝。我仍然開始瞭解python格式和代碼結構的細節,因此非常感謝您的幫助。使用.strip()修復了這個問題,所以謝謝 – user3457104

+0

pdb技巧是我個人最喜歡的調試工具。 –