Avec ta première solution TheRealMarco tu n'évites pas simplement les combinaisons identiques, mais aussi les prénoms / noms identiques (exemple : tu ne peux pas tirer James Smith et James Johnson)... Je ne crois pas que ce soit ce que voulait l'auteur.
Perso j'imaginais un truc plus orienté objet et plus " rigoureux " peut-être... Mais bon je pense que je complexifie beaucoup trop la tâche pour rien par rapport aux autre codes fonctionnels que vous avez proposé TheRealMarco et ThisIsLaFleche. 
Je la montre quand même, parce que j'aime bien résoudre de " petits problèmes comme ça " en Python. 
En repartant du code de l'auteur :
m_name_list = ["James", "John", "Robert", "Michael", "William"]
l_name_list = ["Smith", "Johnson", "Williams", "Jones", "Brown"]
character_list = []
class CHARACTER:
def __init__ (self, surname, name):
self.surname = surname
self.name = name
def isEqualTo(self, other_character):
if self.surname == other_character.surname and self.name == other_character.name:
return false
return true
for x in 5:
character = CHARACTER(random.choice(m_name_list), random.choice(l_name_list))
for char in character_list:
if char.isEqualTo(character):
break
else:
character_list.append(character)
Message édité le 24 février 2019 à 21:06:54 par Grimmys