Python 3:如何使用用户输入并从字典列表中检索答案制作游戏,然后使用积分系统?

我正在尝试制作一个游戏,要求用户根据从字典列表中随机选择的首都来猜测一个国家(类似于底部的链接)。


一共猜10个国家,猜对了得1分,一共10分。


我导入了一个变量“countries”,其中包含如下所示的字典列表:


[{'capital': 'Andorra la Vella',

  'code': 'AD',

  'continent': 'Europe',

  'name': 'Andorra',

  'timezones': ['Europe/Andorra']},

 {'capital': 'Kabul',

  'code': 'AF',

  'continent': 'Asia',

  'name': 'Afghanistan',

  'timezones': ['Asia/Kabul']},

那么如何从特定的键名中打印随机选择呢?在这种情况下,任何字典中的任何“大写”。


慕标琳琳
浏览 190回答 3
3回答

MYYA

random.choice 非常适合这个用例:)import randomcountry_dlist = [{'capital': 'Andorra la Vella',  'code': 'AD',  'continent': 'Europe',  'name': 'Andorra',  'timezones': ['Europe/Andorra']}, {'capital': 'Kabul',  'code': 'AF',  'continent': 'Asia',  'name': 'Afghanistan',  'timezones': ['Asia/Kabul']} ]def run():    tot_points = 0    num_of_ques = len(country_dlist)    for i in range(num_of_ques):        choice = random.choice(country_dlist)        que = country_dlist.remove(choice)        capital = raw_input("Please enter the captial for country {}: ".format(choice['name']))        if capital.lower() == choice['capital'].lower(): # case insensitive match :)            tot_points += 1    return tot_pointspoints = run()print("You scored {} points".format(points))

紫衣仙女

您可以使用以下两个选项。random.choice从列表中选择一个随机元素。示例代码。from random import choicecountry_dict = [{'capital': 'Andorra la Vella',     'code': 'AD',  continent': 'Europe',      'name': 'Andorra',      'timezones': 'Europe/Andorra']},                {'capital': 'Kabul',      'code': 'AF',      'continent': 'Asia',      ame': 'Afghanistan',      'timezones': ['Asia/Kabul']}               ]country = choice(country_dict)capital = input("Please enter the captial for country "+country['name'])if capital == country['capital']:    print("Correct answer")random.ranint选择 0 和列表长度之间的随机整数。示例代码:from random import randintcountry_dict = [{'capital': 'Andorra la Vella',      'code': 'AD',      'continent': 'Europe',      'name': 'Andorra',      'timezones': ['Europe/Andorra']},                {'capital': 'Kabul',      'code': 'AF',      'continent': 'Asia',      'name': 'Afghanistan',      'timezones': ['Asia/Kabul']}               ]ind = randint(0,len(country_dict)-1)capital = input("Please enter the captial for country "+country_dict[ind]['name'])if capital == country_dict[ind]['capital']:    print("Correct answer")

冉冉说

您可以使用以下方法获取随机样本 randomCountry = random.choice(countries)但是,如果您多次执行此操作,您可能会多次获得同一个国家/地区。为了解决这个问题,您可以对 10 个不同的元素进行采样randomCountries = random.sample(countries, 10),然后使用它们进行迭代。请注意,random.sample如果您尝试对比集合中存在的元素更多的元素进行采样,则会引发错误。因此,您的游戏可能如下所示:import randomcountries = [    {'capital': 'Andorra la Vella', 'code': 'AD', 'continent': 'Europe', 'name': 'Andorra', 'timezones': ['Europe/Andorra']},     {'capital': 'Kabul', 'code': 'AF', 'continent': 'Asia', 'name': 'Afghanistan', 'timezones': ['Asia/Kabul']},    ...]rounds = 10random_countries = random.sample(countries, rounds) # returns 10 random elements (no duplicates)score = 0for country in random_countries:    print("Score: %d / %d | Which country has the capital: %s?" % (score, rounds, country['capital']))    country_response = input()    if country_response == country['name']:        score += 1        print("Correct")    else:        print("Incorrect")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python