【问题标题】:Python: why does my code keep telling me the answer is wrong when its not?Python:为什么我的代码一直告诉我答案是错误的,而事实并非如此?
【发布时间】:2020-04-02 22:07:18
【问题描述】:
import random

d = {}
with open('StatesCapitals.txt') as f:
    for line in f:
        key, value = line.split(',')
        d[key] = value



HI = random.choice(list(d.keys()))
print(HI)

answer = (d[HI])

print (answer)

StudentAnswer = (input('Type your answer: '))

if answer.lower() == StudentAnswer.lower():
    print('Correct!')
else:
    print('Wrong.')

这将从我的文件中打印出一个随机选择的州,并打印出该州的国会大厦,这是问题的答案。无论我是否输入正确答案,我总是从 else 语句中收到“错误”,而且我似乎无法弄清楚原因。

example of what my StatesCapitals.txt looks like

【问题讨论】:

  • 你能提供样本输入(包括文件)吗?顺便说一句,你不需要随机选择列表的键,你可以做answer = random.choice(d)
  • 你可能有一些额外的空格,试试if answer.strip().lower() == StudentAnswer.strip().lower()
  • 我们都编写了不符合我们预期的代码。当你学习编程时,你只需要接受这个事实。您还需要学习如何调试代码以发现缺陷并修复它们。阅读this article 以获取有关如何调试代码的提示。我每天都使用这些技术来找出我编写的代码(或其他人编写的代码)中的问题。作为一名初出茅庐的程序员,它们是您早期教育的重要组成部分。
  • 这些值有一个尾随换行符 (\n),这导致了不匹配。

标签: python python-3.x if-statement input equals


【解决方案1】:

遍历文件会返回一个末尾带有换行符的字符串,因此您必须使用.strip() 将其删除。您应该将循环中的第一行替换为key, value = line.strip().split(',')

顺便说一句,您不需要random.choice 列表的键,您可以直接使用answer = random.choice(d)

【讨论】:

  • 谢谢,把它改成 key, value = line.strip().split(',') 解决了我的问题。这很简单,我只是没有考虑。
猜你喜欢
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 2018-01-14
  • 2010-12-06
  • 1970-01-01
  • 2012-12-22
  • 2014-06-13
  • 2021-06-28
相关资源
最近更新 更多