5 svar
407 visningar
Mercy är nöjd med hjälpen
Mercy 33
Postad: 2 maj 2021 08:32 Redigerad: 2 maj 2021 15:23

Para ihop namn slumpmässigt

Jag har det här programmet som slumpmässigt parar ihop herrar  och damer inför fest, jag ville inte använda choice då blir inte valet slumpat och inte heller shuffle. 

 

Det som jag får att det sista namnet på både herr och dam i alla borden, har jag missat nåt?

 

import random
gäster =["Ali", " Samer", " Amer", "Johan", "Ali", " Brad", " Kama", " Mikael", " Sam", " Olle", " Kalle", "Anders", " Martin", " Peter"," Maria ", " Anna ", "Eva ", "Sara", "Camilla", " Beritt"," Petra", "Johanna", " Dunya", " Dina", " Lina", "Carro", " Anette", " Malak"]

for m_namn in gäster[0:14]:
for k_namn in gäster[14:28]:
random.randint()

print (" på plats 1 och 2 sitter:"+ m_namn + "och hans borddam"+ k_namn)
print (" på plats 3 och 4 sitter:"+ m_namn + "och hans borddam"+ k_namn)
print (" på plats 5 och 6 sitter:"+ m_namn + "och hans borddam"+ k_namn)
print (" på plats 7 och 8 sitter:"+ m_namn + "och hans borddam"+ k_namn)
print (" på plats 9 och 10 sitter:"+ m_namn + "och hans borddam"+ k_namn)
print (" på plats 11 och 12 sitter:"+ m_namn + "och hans borddam"+ k_namn)
print (" på plats 13 och 14 sitter:"+ m_namn + "och hans borddam"+ k_namn)


Rubrik ändrad från "Vet någon vad har jag missat här?" till nuvarande. En beskrivande rubrik underlättar för de som svarar, och hjälper till att skilja trådar från varandra. /Smutstvätt, moderator 

Laguna Online 28522
Postad: 2 maj 2021 14:19

När jag anropar randint() så får jag ett fel, för funktionen vill veta hur stora talen får vara. Ser din kod verkligen ut så?

Sedan använder du samma värden m_namn och k_namn på varje rad, utan att ändra variablernas värde. Du får använda slumptalet för att bestämma vilka som ska paras ihop.

Mercy 33
Postad: 2 maj 2021 17:54

Jo, men i det här fallet blir det inte slumptal utan slumpobjekt, det vill säga random.random() utan några argument.

Vad menar du med samma värde på herr och dam? Ska de vara två separata listor eller vad?

Laguna Online 28522
Postad: 2 maj 2021 18:03

Det står random.randint() i din kod, inte random.random(). random.random() ger ett tal.

"Samma värde på herr och dam" skrev jag inte. Jag menar att t.ex. m_namn på första print-raden har samma värde som m_namn på raden under, för ingenting har hänt med variablerna.

Jag tror jag missförstod strukturen på programmet, för att det inte har någon indentering. Kan du använda kod-verktyget (det ser ut som {;} när man skriver ett inlägg) för att kopiera in programmet igen så man ser vad som ingår i looparna och inte?

Lindehaven 820 – Lärare
Postad: 11 maj 2021 16:47

En annan användbar metod i random-modulen är shuffle(). Den kan slumpa ordningen i en lista. Om du använder shuffle() bör du dock använda två listor, en för herrarna och en annan för damerna:

gäster1 = ["Ali", "Samer", "Amer", "Johan", "Ali", "Brad", "Kama", "Mikael", "Sam", " Olle", "Kalle", "Anders", "Martin", "Peter"
gäster2 = ["Maria", "Anna", "Eva", "Sara", "Camilla", "Berit", "Petra", "Johanna", "Dunya", "Dina", "Lina", "Carro", "Anette", "Malak"]

Då kan ordningen i listorna slumpas så här:

random.shuffle(gäster1)
random.shuffle(gäster2)

Oavsett vilken metod du använder så behöver du se till att de personer som redan parats ihop inte senare kan paras ihop med någon annan. Du kan exempelvis ta bort namnen ur listorna när de parats ihop med någon.

Mercy 33
Postad: 12 maj 2021 14:14

Tack!

Svara Avbryt
Close