Seite 1 von 1

Berechnung gibt keinen Wert zurück

Verfasst: Sonntag 17. Januar 2016, 16:37
von SteffenV
Hallo,
ich habe folgendes Programm:

Code: Alles auswählen

#!/usr/bin/env python
def tower_digits(d):
    m = 1
    x = 3
    for n in range(d):
        m = 10*m
        x = pow(3, x, m)
#compute 10 digits
print tower_digits(10)
Dieses soll die 10 letzten Stellen der Graham Zahl berechnen.
Wenn ich das Programm starte bekomme ich jedoch nur "None" als Ergebnis.
Wo ist mein Fehler?

Ciao Steffen

Re: Berechnung gibt keinen Wert zurück

Verfasst: Sonntag 17. Januar 2016, 16:39
von Dav1d
Deine Funktion so wie sie da steht hat kein Ergebnis.

Vergleiche:

Code: Alles auswählen

def add(x, y):
    result = x +y

print add(1, 2)
Und:

Code: Alles auswählen

def add(x, y):
    result = x +y
    return result

print add(1, 2)

Re: Berechnung gibt keinen Wert zurück

Verfasst: Sonntag 17. Januar 2016, 17:05
von SteffenV
Danke für die schnelle Hilfe.

Ciao Steffen

Re: Berechnung gibt keinen Wert zurück

Verfasst: Mittwoch 20. Januar 2016, 10:32
von BlackJack
@SteffenV: Da es sich um Python 2 handelt würde ich statt `range()` die `xrange()`-Funktion verwenden. Du willst an der Stelle ja keine Liste mit Zahlen haben sondern die Zahlen einzeln. Eigentlich noch nicht einmal das, denn nicht einmal die einzelnen Zahlen werden im weiteren Verlauf verwendet.

Ausserdem kann man die Funktion in Python etwas kompakter, und damit kürzer ausdrücken, und sollte sie etwas länger schreiben, nämlich was die Namen angeht:

Code: Alles auswählen

def tower_digits(digit_count):
    result, modulus = 3, 10
    for _ in xrange(digit_count):
        result, modulus = pow(3, result, modulus), 10 * modulus
    return result