2016-10-29 3 views
-3

Ich bin ziemlich neu in Python und dies ist für das Programmieren von Projekt in meinem CS-Kurs. Der Code scheint perfekt zu funktionieren, außer in der letzten Codezeile:Python - Funktion gibt keine Variable (String) zurück

return finalWord 

gibt nichts zurück. Ich habe versucht, dieses zu ersetzen mit:

und es druckt alles richtig. Im Programm muss ich eine Random-Klasse erstellen, die pseudozufällig Zahlen generiert und dann in der Klasse Nonce mehrere Wörter zum Wörterbuch hinzufügt und mit dem Wörterbuch neue, zufällige Wörter erzeugt.

class Random: 

    def __init__(self, seed): 
     self.seed = seed 

    def next(self, range): 
     self.seed = (7 ** 5 * self.seed) % (2 ** 31 - 1) 
     return self.seed % range 

    def choose(self, objects): 
     return objects[self.next(len(objects))] 

class Nonce: 

    def __init__(self, seed): 
     self.first = [] 
     self.follow = {} 
     self.random = Random(seed) 

    def add(self, word): 
     self.first += [word[0]] 
     for x in range(0, len(word) - 1): 
      self.follow.setdefault(word[x], []).append(word[x + 1]) 
     return None 

    def make(self, size): 
     nextLetter = self.random.choose(self.first) 
     finalWord = nextLetter 

     for x in range(1, size): 
      if nextLetter in self.follow: 
       followList = self.follow[nextLetter] 
       nextLetter = self.random.choose(followList) 
       finalWord += nextLetter 
      else: 
       finalWord += self.random.choose(self.first) 

     return finalWord 

potato = Nonce(101) 
potato.add('python') 
potato.add('java') 
potato.add('html') 
potato.make(5) 

Vielen Dank im Voraus.

+1

Rufen Sie die Funktion und 'Print'-ing das Ergebnis? –

+5

Vielleicht könnten Sie [mit Ihrem Klassenkameraden] arbeiten (http://stackoverflow.com/questions/40315643/python-attributeerror-instance-has-no-attribute)? – TigerhawkT3

Antwort

3

Wenn Sie die Funktion direkt aufrufen, müssen Sie entweder etwas mit dem zurückgegebenen Wert (z. B. Drucken) oder in einer Variablen zur späteren Verwendung speichern. Der Code funktioniert nicht, weil Sie die Funktion nie aufrufen, zumindest nicht in dem von Ihnen bereitgestellten Auszug.

die Antwort Drucken:

print(instance_name.make()) 

es in einer Variablen speichern:

variable_name = instance_name.make()) 

Der Code wird in dem die Instanz der Klasse instance_name

In Ihrem Code genannt wird, schrieb Sie potato.make(5). Die Funktion wird ausgeführt, druckt jedoch nichts oder speichert sie in einer Variablen. Um die Antwort zu drucken, müssen Sie Folgendes tun:

print(potato.make(5)) 
+0

Oh, Entschuldigung, ich habe das wirklich weggelassen. Ja, ich habe es so genannt. Lass mich das modifizieren. –

+0

OH WOW, das ist so ein idiotischer Fehler. Vielen Dank, lol. –

+0

@MichelleC. - Wenn das Problem auf ein einfaches Versehen/Tippfehler zurückzuführen ist, können Sie die Frage löschen, da solche Fragen für zukünftige Besucher nicht nützlich sind. – TigerhawkT3

Verwandte Themen