Python - CSV 文件,确保答案与询问的内容在同一行

标签 python csv

抱歉,标题太长了。

基本上,我的问题是,我得到了这个非常小的项目来创建一个地理测验,该测验询问用户某个国家的首都是什么。该项目本身非常简单,我可以很快完成,因为它建议您从国家列表中随机选择一个问题,然后检查用户的答案是否等于答案列表中的同一位置。 (抱歉,如果您不明白我的意思)

但是,我想更进一步,我有一个数据 CSV 文件,其中包含 150 多个国家和首都的格式

乡村资本 所以, 法国巴黎

我希望我的程序做的是询问用户一个国家的首都是什么,并且该国家/地区将从 CSV 文件中的第 [0] 行中随机排列。然后当用户去回答时,如果问题是澳大利亚的首都是哪里?如果他们进入悉尼,我希望它检查 CSV 文件,看看澳大利亚是否与悉尼在同一行,格式为 AustraliaSydney ,但因为悉尼不会在同一行,所以告诉他们这是一个错误的答案。那么下一个问题,如果它说法国的首都是哪里,然后他们进入巴黎,它会检查巴黎和法国是否在一起,然后它会给出正确的答案。

这就是我到目前为止所拥有的,实际上什么都不是,因为我对 CSV 操作有点陌生,任何帮助都是值得赞赏的。

import csv
import random
words = dict(csv.reader(open('Data.csv')))
randomWord = random.choice(words.keys())
correctAnswer = words[randomWord]

这很可能是错误的,因为当我在互联网上搜索寻找正确方向的指针时,这就是我所得到的一切, Sample of the Data.csv

谢谢。

最佳答案

import csv
import random

countries_capials = dict(csv.reader(open('Data.csv')))

# assuming Data.csv is a comma separated file as so:
# France,Paris
# Australia,Sydney

while True:
    random_country = random.choice(countries_capials.keys())
    answer = countries_capials[random_country]
    print "What's the capial of %s" % random_country
    user_answer = raw_input(">>")
    if user_answer == answer:
        print "That's right!"
    else:
        print "That's wrong!"

输出:

What's the capial of France
>>Paris
That's right!
What's the capial of Australia
>>New York
That's wrong!

您在示例中获得了所需的一切,只是缺少 raw_input()if/else 位。

编辑

使用this作为数据的国家/首都列表:

csv_file = csv.reader(open('country-list.csv'))
countries_capials = {country:capital for (country,capital,capital_type)  in csv_file}

我们使用 dict-comprehension 创建字典.

关于Python - CSV 文件,确保答案与询问的内容在同一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33876599/

相关文章:

php - 使用 PHP 将 CSV 文件导入 MySQL

python - 不同图像的相同 fc6 响应

python - 无法导入 Pyperclip

python - 如何在scrapy中给出每个请求之间的延迟?

python - 量化 TFLite 模型比 TF 模型具有更好的精度

javascript - 高效的 CSV 行减少 JS

Python networkx 图形标签

csv - 使用字段中的空格解析空格分隔文件

linux - 在 Linux 上扫描文本文件进行质量检查(模式匹配)的最佳实践是什么?

sql - 如何在 Perl 5 中将此 Unicode 表导出为 CSV?