Python:随机琐事问答,在参数中

2024-06-08 19:11:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新来学习python的,我想做一些琐事。基本上,我想从列表中随机询问一个问题,然后使用“in”操作符,判断用户输入的Y/N是否正确。我一直在决定如何检查它是否正确。也许我的(不正确的)代码可以更好地解释

import random

Players = ['Patrice Evra', 'Rio Ferdinand', 'Sergio Ramos', 'Gerard Pique']
Clubs = ['Manchester United', 'Nice', 'Monaco', 'Marseille', 'West Ham United', 'Sevilla', 'Real Madrid', 'Barcelona']
Ramos = ['Sevilla', 'Real Madrid']
Evra = ['Manchester United', 'Nice', 'Monaco', 'Marseille', 'West Ham United']
Ferdinand = ['Leeds United', 'Manchester United']
Pique = ['Barcelona', 'Manchester United']
print('Did ' + random.choice(Players) + ' play for ' + random.choice(Clubs) + ' ? Y/N')
answer = input()

这就是我被卡住的地方,我甚至不确定这是不是正确的方法。谢谢你的帮助


Tags: randomunitednicehamwestplayersmonacoclubs
3条回答

最重要的是,您必须保存您的随机选择,以便以后可以验证它。因此,您应该先指定两个变量:

player = random.choice(Players)
club = random.choice(Clubs)
print('Did ' + player + ' play for ' + club + ' ? Y/N')

然后您可以通过if语句验证您自己。但更快(更复杂)的方法是:

did_play = club in [Evra, Ferdinand, Ramos, Pique][Players.index(player)]

最好以不同的方式存储变量EvraFerdinandRamosPique,但目前这应该是关键所在

存储这些变量的更好方法是使用以下词典:

player_clubs = {
"Patrice Evra": ['Manchester United', 'Nice', 'Monaco', 'Marseille', 'West Ham United'],
"Rio Ferdinand": ['Leeds United', 'Manchester United'],
"Sergio Ramos": ['Sevilla', 'Real Madrid'],
"Gerard Pique": ['Barcelona', 'Manchester United']
}

这样你可以更容易地检查他们是否在某个俱乐部踢球,比如:

did_play = club in player_clubs[player]

下面是从一本词典中生成问题的方法。我意识到,如果您刚刚开始编写代码,其中一些代码可能会有点混乱,但它将为您提供一些有趣的内容

import random

#Store all clubs per player in a dictionary
games_dict = {"Sergio Ramos": ['Sevilla', 'Real Madrid'], "Patrice Evra": ['Manchester United', 'Nice', 'Monaco', 'Marseille', 'West Ham United'], 
"Rio Ferdinand": ['Leeds United', 'Manchester United'], "Gerard Pique": ['Barcelona', 'Manchester United']}
#Get a list of player in the dictionary
players = list(games_dict.keys())
#Get a list of clubs in the dictionary using a list comprehension
clubs =  [club for clublist in games_dict.values() for club in clublist]
#Select random player
player = random.choice(players)
#Get a random club (set is used to only select from unique clubs)
club = random.choice(list(set(clubs)))
#Ask for answer
inputanswer = input(f"Did {player} play for {club}? Y/N")

#Check if answer is correct
if inputanswer.lower() == "y" and club in games_dict[player] or inputanswer.lower() == "n" and club not in games_dict[player]:
    print("correct!")
else:
    print("incorrect!")

你需要将球员与俱乐部联系起来。这最好用字典来完成,我在这里称之为俱乐部。这本字典的关键是俱乐部名称,价值观是每个俱乐部的球员名单。此外,当您要求用户输入时,您应该将提示问题放在输入的参数中

import random
players = ['Patrice Evra', 'Rio Ferdinand', 'Sergio Ramos', 'Gerard Pique']
clubs = {'Manchester United':['Patrice Evra', 'Rio Ferdinand', 'Gerard Pique'],
   'Nice':['Patrice Evra'],
   'Monaco':['Patrice Evra'],
   'Marseille':['Patrice Evra'],
   'West Ham United':['Patrice Evra'],
   'Sevilla':['Sergio Ramos'],
   'Real Madrid':['Sergio Ramos'],
   'Barcelona':['Gerard Pique'],
   'Leeds Nations': ['Rio Ferdinand']}

player = random.choice(players)
club = random.choice(list(clubs.keys()))
answer = input(f'Did {player} play for {club}? y/n: ')
if answer == "y" and player in clubs[club]\
        or answer == "n" and player not in clubs[club]:
    print("Correct!")
else:
    print("wrong")

相关问题 更多 >