Python-CSV文件,确保答案与询问的内容在同一行
对不起,标题太长了 基本上,我的问题是,我得到了一个相当小的项目来创建一个地理测验,询问用户某个国家的首都是什么。这个项目本身很简单,我可以很快完成,因为它建议你从国家列表中随机抽取一个问题,然后检查用户的答案是否与答案列表中的相同位置相同。(对不起,如果你不明白我的意思) 然而,我想更进一步,我有一个数据CSV文件,其中有超过150个国家和首都的格式 乡村资本 所以 弗朗西帕里斯 我想让我的程序做的是询问用户一个国家的首都是什么,然后该国家将从CSV文件的第[0]行随机选择。然后,当用户去回答时,如果问题是澳大利亚的首都是什么?如果他们进入悉尼,我希望它检查CSV文件,看看澳大利亚是否与悉尼在同一行,格式为AustraliaSydney,但因为悉尼不会在同一行,告诉他们这是一个错误的答案。然后下一个问题,如果它说法国的首都是什么,然后他们进入巴黎,它会检查巴黎和法国是否在一起,然后它会给出正确的答案 这是我到目前为止所拥有的,其实什么都不是,因为我对CSV操作有点陌生,任何帮助都非常感谢Python-CSV文件,确保答案与询问的内容在同一行,python,csv,Python,Csv,对不起,标题太长了 基本上,我的问题是,我得到了一个相当小的项目来创建一个地理测验,询问用户某个国家的首都是什么。这个项目本身很简单,我可以很快完成,因为它建议你从国家列表中随机抽取一个问题,然后检查用户的答案是否与答案列表中的相同位置相同。(对不起,如果你不明白我的意思) 然而,我想更进一步,我有一个数据CSV文件,其中有超过150个国家和首都的格式 乡村资本 所以 弗朗西帕里斯 我想让我的程序做的是询问用户一个国家的首都是什么,然后该国家将从CSV文件的第[0]行随机选择。然后,当用户去回答
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,您必须设法将其一分为二,这将有点麻烦,因为有些国家可能有两个词,例如捷克共和国,在您的文件中显示为捷克共和国。这是行不通的。