亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 3:如何使用用戶輸入并從字典列表中檢索答案制作游戲,然后使用積分系統?

Python 3:如何使用用戶輸入并從字典列表中檢索答案制作游戲,然后使用積分系統?

慕標琳琳 2021-11-02 17:14:08
我正在嘗試制作一個游戲,要求用戶根據從字典列表中隨機選擇的首都來猜測一個國家(類似于底部的鏈接)。一共猜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']},那么如何從特定的鍵名中打印隨機選擇呢?在這種情況下,任何字典中的任何“大寫”。
查看完整描述

3 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

random.choice 非常適合這個用例:)


import random



country_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_points


points = run()

print("You scored {} points".format(points))


查看完整回答
反對 回復 2021-11-02
?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

您可以使用以下兩個選項。


random.choice從列表中選擇一個隨機元素。

示例代碼。


from random import choice

country_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 randint

country_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")


查看完整回答
反對 回復 2021-11-02
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

您可以使用以下方法獲取隨機樣本 randomCountry = random.choice(countries)


但是,如果您多次執行此操作,您可能會多次獲得同一個國家/地區。為了解決這個問題,您可以對 10 個不同的元素進行采樣randomCountries = random.sample(countries, 10),然后使用它們進行迭代。


請注意,random.sample如果您嘗試對比集合中存在的元素更多的元素進行采樣,則會引發錯誤。


因此,您的游戲可能如下所示:


import random


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']},

    ...

]


rounds = 10

random_countries = random.sample(countries, rounds) # returns 10 random elements (no duplicates)


score = 0

for 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")


查看完整回答
反對 回復 2021-11-02
  • 3 回答
  • 0 關注
  • 225 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號