2016-10-29 3 views
0

Ich frage mich, wie ich die Variable "adj" von Def getInput verwenden und es mit Adjektiven verbinden würde(), ich versuche, es so zu machen, dass ich vom Benutzer eine Eingabe erhalten kann und dann die random.choice aktivieren je nachdem, wie viele Adjektive, die der Benutzer eingibt. Als Student für dieses Projekt kann ich nur benutzerdefinierte Funktionen verwenden.Wie verwenden Sie lokale Variablen von einer benutzerdefinierten Funktion zu einer anderen?

import random 
def getInput(): 
    insult = input("Enter number of insults you want generated: ") 
    target = input("Enter the targets name: ") 
    adj = input("Enter number of adjectives you want in your insults: ") 

def adjective(): 
    adjectives = ("aggressive", "cruel", "cynical", "deceitful", "foolish", "gullible", "harsh", "impatient", "impulsive", "moody", "narrow-minded", "obsessive", "ruthless", "selfish", "touchy") 

    for adj in adjectives: 
     print(random.choice(adjectives)) 
     break 
+0

Wo möchten Sie den Wert benutzen? Brauchen Sie wirklich die 'getInput'-Funktion? –

+0

Definiere '' 'Adjektiv' '' mit einem Argument - '' 'def Adjektiv (adj): ...' '', gebe adj von '' '' getInput''' zurück, übergebe den Rückgabewert an '' 'Adjektiv' "". https://docs.python.org/3/tutorial/controlflow.html#defining-functions – wwii

+0

Sie können "multiple" Werte zurückgeben: 'return insult, target, adj' Es ist nicht * wirklich * mehrere Werte, es ist ein Tupel, aber Sie können die Funktion wie folgt aufrufen: 'beleidigen, target, adj = getInput()'. – cdarke

Antwort

0

Hier ist eine Option.

import random 
def getInput(): 
    insult = input("Enter number of insults you want generated: ") 
    target = input("Enter the targets name: ") 
    adj = input("Enter number of adjectives you want in your insults: ") 
    return int(insult), int(target), int(adj) # cast to int and return 

def adjective(numAdj): # add a parameter 
    adjectives = ("aggressive", "cruel", "cynical", "deceitful", "foolish", "gullible", "harsh", "impatient", "impulsive", "moody", "narrow-minded", "obsessive", "ruthless", "selfish", "touchy") 

    for i in range(numAdj): # use parameter 
     print(random.choice(adjectives)) 
     # do not break the loop after one pass 

insult, target, adj = getInput() # get values 
adjective(adj) # pass in 

Eine weitere Option ist mit global Schlüsselwort innerhalb der Funktion oder einfach Ihre Anzahl Wert im globalen Bereich erklärt mit

0

beginnen Wenn Sie den Wert des „adj“ Variable in GetInput nehmen wollen () und benutze es in Adjektiv(), du willst es von getInput() zurückgeben und dann kannst du getInput() aufrufen. Wenn Sie nur die Zeile return adj am Ende von getInput() hinzufügen, dann können Sie in einer anderen Funktion - wie Adjektiv() - die Zuweisung adj = getInput() verwenden, um sie in dieser Funktion zu verwenden.

Im Allgemeinen Sie Werte von Funktionen zurückgeben können und geben Werte in als Argumente Werte zwischen Funktionen zu teilen - Python-Dokumentation erklärt, wie das funktioniert: https://docs.python.org/2/tutorial/controlflow.html#defining-functions

Verwandte Themen