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

Python-CSV文件,确保答案与询问的内容在同一行,python,csv,Python,Csv,对不起,标题太长了 基本上,我的问题是,我得到了一个相当小的项目来创建一个地理测验,询问用户某个国家的首都是什么。这个项目本身很简单,我可以很快完成,因为它建议你从国家列表中随机抽取一个问题,然后检查用户的答案是否与答案列表中的相同位置相同。(对不起,如果你不明白我的意思) 然而,我想更进一步,我有一个数据CSV文件,其中有超过150个国家和首都的格式 乡村资本 所以 弗朗西帕里斯 我想让我的程序做的是询问用户一个国家的首都是什么,然后该国家将从CSV文件的第[0]行随机选择。然后,当用户去回答

对不起,标题太长了

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

然而,我想更进一步,我有一个数据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]
这很可能是错误的,因为当我在互联网络中寻找一个指向正确方向的指针时,我只得到了这些,

谢谢

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\u input()
if/else

编辑 使用国家/首都列表作为数据:

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

我们使用创建字典。

我假设您的数据文件是以下格式,其中不是逗号分隔的,但每行表示一个国家和一个城市,没有空格连接在一起,但每行大写如下:

法兰西帕里斯 伦敦联合国王酒店 etc

以下方面应起作用:

import re
import random

lines = [line.rstrip('\n') for line in open('countres.csv')]

countries = {}
for pair in lines:
    split = re.findall('[A-Z][^A-Z]*', pair)
    city = split[-1]
    country = ''.join(split[:-1])

    countries[country] = city

for i in range(len(countries)):
    curCountry = random.choice(countries.keys())
    print "What's the capital of %s?" % curCountry
    user_answer = raw_input(">>")

    if user_answer == countries[curCountry]:
        print "Correct"
    else:
        print "Incorrect"

    del countries[curCountry]

首先,您需要读取csv文件并将所有内容拆分为字典键/值。从这一点来说,其余的都是无关紧要的,因为您只需随机选择一个键,获取输入,并检查与该键相关的值

可能需要一个简短的.csv内容示例。在主帖子中添加了一个小示例。您能解释数据的格式吗?为什么会这样?老实说erip,我不知道,我几个月前从互联网上下载了这个CSV文件,这个项目碰巧出现了,所以我想我还是利用一下它吧。如果Data.CSV不是逗号分隔的文件,我应该做什么更改?我想这是一个比我更好的答案+1我不需要原始输入,因为我使用的是3.4.2版本的Python@Thom9son好吧,csv文件是逗号分隔的,它在它的名字里!但在您的情况下,如果您使用的是FranceParis,您必须设法将其一分为二,这将有点麻烦,因为有些国家可能有两个词,例如捷克共和国,在您的文件中显示为捷克共和国。这是行不通的。