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
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.
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?
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?
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.
Tack!