为什么用户的输入未被识别为正确?

时间:2016-09-08 01:01:58

标签: python string file python-3.x input

我的代码有问题。我对阅读文件比较陌生,因此我不知道我的代码有什么问题。

# 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社区合作。

3 个答案:

答案 0 :(得分:1)

首先,您的代码有错误:print(string_lines_final[1])应为print(string_lines_split[1])

您的问题是'\n'中有一个尾随string_lines_split[1]导致比较失败。

尝试将string_lines = lines[ran_lines]更改为string_lines = lines[ran_lines].rstrip()

答案 1 :(得分:0)

即使我的答案与string_lines_split1中的答案完全相同,程序也会打印出我的答案错误

然后他们并不完全一样。你必须接受这一点,因为Python不能弯曲或弯曲。如果它们不一样但它们看起来一样,那么尝试其他的东西,直到找出原因。

提示:文件是如何排列的:

Alabama,Montgomery
Alaska,Juneau
Arizona,Phoenix

而不是:

Alabama,MontgomeryAlaska,JuneauArizona,Phoenix

提示:比较输入的len()与正确答案。

提示:逐个字符地比较它们。也许打印character codes

答案 2 :(得分: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)