Berechnung gibt keinen Wert zurück

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
SteffenV
User
Beiträge: 2
Registriert: Sonntag 17. Januar 2016, 16:31

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
Zuletzt geändert von Anonymous am Sonntag 17. Januar 2016, 17:04, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

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)
the more they change the more they stay the same
SteffenV
User
Beiträge: 2
Registriert: Sonntag 17. Januar 2016, 16:31

Danke für die schnelle Hilfe.

Ciao Steffen
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
Antworten