2016-09-08 37 views
0

我的代碼有問題。我從文件讀取相對較新,因此,我不知道我的代碼有什麼問題。爲什麼用戶的輸入未被識別爲正確?

# Flashcards 

#Read from a file containing questions in the form question, answer 


import random 
import time 

def __run__(): 
    read_file = open('state_capitals.txt','r') 
    lines = read_file.readlines() 
    ran_lines = random.randrange(0,49) 
    string_lines = lines[ran_lines] 
    global string_lines_split # To make debugging easier 
    string_lines_split = string_lines.split(',') 
    print(string_lines_split[1]) # Print correct answer 
    usr_input = input(string_lines_split[0]) 
    if usr_input == str(string_lines_split[1]): 
     print("Correct!") 
    else: 
     print("Incorrect") 
     print(usr_input) 

當我執行運行(),直到我進入我的回答一切工作正常。系統提示我輸入答案,當我輸入答案時,即使我的答案與string_lines_split 1中的答案完全相同,程序也會打印出我的答案錯誤。鏈接到文本文檔: http://web.mit.edu/jesstess/www/IntermediatePythonWorkshop/state_capitals.txt

>>>__run__() 
Helena 

MontanaHelena 
Incorrect 
Helena 

感謝您閱讀我的問題,並引導我走向一個解決方案。我期待着與stackoverflow社區合作。

+0

凡定義'string_lines_final'? –

回答

1

首先您的代碼有錯誤:print(string_lines_final[1])應該是print(string_lines_split[1])

您的問題是在string_lines_split[1]中有一個尾隨'\n',導致比較失敗。

嘗試將string_lines = lines[ran_lines]更改爲string_lines = lines[ran_lines].rstrip()

+0

如果尾隨非換行符相關的空白是重要的,則可能將'「\ r \ n」'傳遞給'rstrip'。 – ShadowRanger

+0

爲了將來的參考,剝離空白如何修復代碼?我假設刪除空格將代碼轉換爲一行,如果這是正確的,那麼隨機函數的工作方式會不同嗎?我非常感謝你的回答,並且正努力學習更多關於字符串方法的知識。 –

0

即使我的答案是完全一樣的string_lines_split1答案,程序打印,我的答案是錯

然後,他們是不完全一樣的。你必須接受,因爲Python永遠不會彎曲或彎曲。如果他們不一樣,但他們看起來一樣,嘗試其他的東西,直到你找出原因。

提示:該文件是怎麼來的安排是這樣的:

Alabama,Montgomery 
Alaska,Juneau 
Arizona,Phoenix 

,而不是這樣的:

Alabama,MontgomeryAlaska,JuneauArizona,Phoenix 

提示:比較您輸入的len()與正確的答案。

提示:逐字比較它們。也許印刷character codes

0

所以,當你閱讀文件,通過read_file.readlines()返回列表如下:

[...'West Virginia,Charleston\n', 'Wisconsin,Madison\n', 'Wyoming,Cheyenne'] 

所以,你的代碼應該是這樣的:

def __run__(): 
    read_file = open('state_capitals.txt','r') 
    lines = read_file.readlines() 
    ran_lines = random.randrange(0,49) 
    string_lines = lines[ran_lines] 
    global string_lines_split # To make debugging easier 
    string_lines_split = string_lines.split(',') 
    print(string_lines_split[1]) # Print correct answer 
    usr_input = input(string_lines_split[0]) 
    if usr_input == str(string_lines_split[1].rstrip()): 
     print("Correct!") 
    else: 
     print("Incorrect") 
     print(usr_input) 
相關問題