liste med navnet med et funksjonsargument i python

stemmer
1

Jeg får følelsen av dette er nok noe jeg burde vite, men jeg kan ikke tenke på det akkurat nå. Jeg prøver å få en funksjon for å bygge opp en liste der navnet på listen er et argument gitt i funksjon;

f.eks

def make_hand(deck, handname):
    handname = []
    for c in range(5):
        handname.append(deck.pop())
    return handname

    # deck being a list containing all the cards in a deck of cards earlier

Problemet er at dette skaper en liste kalt handname når jeg vil at det skal bli kalt hva brukeren går inn som handname når du oppretter hånden.

Alle kan hjelpe? Takk

Publisert på 01/02/2009 klokken 15:48
kilden bruker
På andre språk...                            


2 svar

stemmer
6

Du kan holde en ordbok hvor tastene er navnet på hånden, og verdiene er listen.

Deretter kan du bare si ordbok [handname] for å få tilgang til en bestemt hånd. Langs linjene av:

hands = {} # Create a new dictionary to hold the hands.
hands["flush"] = make_hand(deck) # Generate some hands using your function.
hands["straight"] = make_hand(deck) # Generate another hand with a different name.
print hands["flush"] # Access the hand later.
Svarte 01/02/2009 kl. 15:55
kilden bruker

stemmer
2

Selv om du kan lage variabler med vilkårlige navn under kjøring, ved hjelp exec(som Sykora foreslått), eller ved meddlings med locals, globalseller setattrpå objekter, er spørsmålet ditt noe moot.

Et objekt (omtrent alt, fra heltall til klasser med 1000 medlemmer) er bare en del av minnet. Det har ikke et navn, det kan ha vilkårlig mange navn, og alle navn blir behandlet likt: de bare innføre en referanse til et objekt og hindre den fra å bli samlet inn.

Hvis du ønsker å navngi elementer i den forstand at en bruker av programmet gir en brukervennlig synlig navn til et objekt, bør du bruke en ordbok for å assosierte objekter med navn.

Din tilnærming av bruker levert variabelnavn har flere andre alvorlige konsekvenser: * Hva hvis brukeren leverer navnet på en eksisterende variabel? * Hva hvis brukeren leverer et ugyldig navn?

Du innføre en lekk abstraksjon , så med mindre det er veldig, veldig viktig for formålet med programmet som brukeren kan angi en ny variabel navn, bør brukeren ikke trenger å bekymre deg for hvordan du lagrer dine gjenstander - en ikke bli presentert med tilsynelatende merkelige begrensninger.

Svarte 01/02/2009 kl. 16:05
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more