Funktion zeigt Ergebnis - Wie weiter benutzen?

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
NeuINFling
User
Beiträge: 10
Registriert: Freitag 4. November 2016, 11:55

Hallo,

gerade stehe ich vor einem Problem. Ich habe ein Script geschrieben, dass über ein for Schleife einer Funktion ein Ergebnis ausgibt.
Nun möchte ich allerdings mit diesem Ergebnis (result) weiter arbeiten. Ich schaffe es nicht, es als neue Variable zu definieren :K
Wie kann ich nun vorgehen? Ich finde den passsenden print Befehl nicht

einen schönen Freitag Abend
NeuINFling
nezzcarth
User
Beiträge: 1635
Registriert: Samstag 16. April 2011, 12:47

Funktionen sind dadurch definiert, dass sie etwas zurückgeben. In Python wird dazu 'return' verwendet. Diesen Rückgabewerte kannst du entweder direkt weiterverarbeiten, oder an einen Namen binden.

Also zum Beispiel:

Code: Alles auswählen

def square(x):
    return x**2

# mittelbar
result = square(2)
print(result)
# oder direkt
print(square(2))
NeuINFling
User
Beiträge: 10
Registriert: Freitag 4. November 2016, 11:55

Hallo nezzcarth und Danke für die Antwort! :D

Ok, so weit so gut. Ich habe gerade versucht deine Tips umzusetzen. allerdings klappt es immer noch nicht, egal was ich in den PrintBefehl schreibe.
Ich habe eine ähnliche Aufgabe, die ich für die Uni erledigen muss. Allerdings möchte ich sie ungern veröffentlichen, daher habe ich simultan ein ähnliches Skript gewählt.
Wie komme ich nun an meine röm. Zahl ran, um sie weiter zu bearbeiten?

Code: Alles auswählen

numeral_map = [(1000, "M"), (900, "CM"), (500, "D"), (400, "CD"), (100, "C"), (90, "XC"),
           (50, "L"), (40, "XL"), (10, "X"), (9, "IX"), (5, "V"), (4, "IV"), (1, "I")]
 
def int_to_rom(i):
    result = []
    for integer, numeral in numeral_map:
        count = i // integer
        result.append(numeral * count)
        i -= integer * count
    return ''.join(result)
BlackJack

@NeuINFling: Das hat Dir nezzcarth doch mit der `square()`-Funktion gezeigt. Mit der `int_to_rom()`-Funktion funktioniert das exakt genau so. Wo liegt dabei Dein konkretes Problem?
NeuINFling
User
Beiträge: 10
Registriert: Freitag 4. November 2016, 11:55

Hi BlackJack,

ich bin mir nicht sicher. Ich glaube, weil ich den Input über eine Eingabe einhole. Ich kann also nicht:

Code: Alles auswählen

result = int_to_roman()
print (result)
eingeben.


es folgt:

Traceback (most recent call last):
File "C:...", line 19, in <module>
result = int_to_roman()
File "...py", line 6, in int_to_roman
if not (0 < x < 4000):
TypeError: unorderable types: int() < builtin_function_or_method()


mit int_to_roman (Input)
und int_to_roman (x)
und int_to_roman (result)

habe ich alles getest...
S0S
User
Beiträge: 50
Registriert: Samstag 9. Februar 2013, 18:59

Naja, du musst der Funktion halt einen Wert mitgeben, welcher ein Integer sein muss. Also:

print int_to_rom(23)

oder:

x = 23
print int_to_roman(x)
BlackJack

@NeuINFling: Der gezeigte Fehler kommt sicher nicht wenn Du die Funktion ohne Argument aufrufst, denn dann bricht das schon an der Stelle ab, eben weil das Argument fehlt.

Offensichtlich hast Du dann als Argument `input` (mit kleinem i) als Argument übergeben, was zu der Ausnahme führt weil `input` eine Funktion ist und Python (3) sich weigert festzustellen ob die *Funktion* `input` grösser als die *Zahl* 0 ist. Was ja auch kein sinnvoller Vergleich ist. Du musst der Funktion schon eine *Zahl* als Argument übergeben. Denn nur für eine Zahl macht es Sinn sie als römische Zahldarstellung (dann eine Zeichenkette) darzustellen.
Antworten