3 回答

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

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

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")
添加回答
舉報