我的代码有问题。我对阅读文件比较陌生,因此我不知道我的代码有什么问题。
# 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 :(得分: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)