2017-10-26 2 views
-1

Also habe ich die folgende Funktion:Wie füge ich ".." zwischen Variablen in einer Funktion hinzu?

def marble_stats(a): 
big_box=a//48 
small_box=(a-big_box*48)//8 
excess=a-((big_box*48)+(small_box*8)) 
cash=26*big_box+4*small_box-excess*2 
return big_box,small_box,excess,cash 

final=marble_stats(503) 
print(final) 

Wenn ich ausführen, erhalte ich: (0, 0, 7, -14)

Aber was ich brauche, ist (0..0..7. .-14) gedruckt werden. Ich habe versucht, die Variablen in Strings umzuwandeln und sie mit ".." zu verketten, aber die Kommata scheinen nicht wegzugehen. Wie komme ich hier zurecht?

+1

„* ich habe versucht, die Variablen in Strings cnoverting und verketten sie mit‚..‘*“ ... können Sie uns zeigen, dein Versuch? Welche Ausgabe hast du bekommen? Das klingt nach dem richtigen Ansatz. – larsks

+0

Einfach. 'final = '..'. join (marmor_stats (503))' –

+0

Ok dieses Mal funktionierte es. Ich muss beim ersten Mal etwas falsch gemacht haben. Danke für die Antwort! – Spectre

Antwort

-2
def marble_stats(a): 
    big_box=a//48 
    small_box=(a-big_box*48)//8 
    excess=a-((big_box*48)+(small_box*8)) 
    cash=26*big_box+4*small_box-excess*2 
    return str(big_box)+'..'+str(small_box)+'..'+str(excess)+'..'+str(cash) 

final=marble_stats(503) 
print(final) 

aus: 10..2..7..254

1

Sie eine Alternative zu geben, hier ist eine pythonic wie es meiner Meinung nach zu tun:

def marble_stats(a): 
    big_box=a//48 
    small_box=(a-big_box*48)//8 
    excess=a-((big_box*48)+(small_box*8)) 
    cash=26*big_box+4*small_box-excess*2 
    return_list = [big_box,small_box,excess,cash] 
    return '..'.join(str(x) for x in return_list) 

final=marble_stats(503) 
print(final) 

Ausgabe

10..2..7..254 
+1

Vereinbart, 'str.join' ist die richtige Lösung hier, nicht der [Schlemiel the Painters Algorithmus] (https://en.wikipedia.org/wiki/Joel_Spolsky#Schlemiel_the_Painter.27s_algorithm), der String-Verkettung wiederholt wird. Optional kann ''..'. Join (map (str, return_list))' für Prägnanz/Geschwindigkeit verwendet werden, aber verwenden Sie das, was sich hier angenehmer anfühlt, es ist kaum leistungskritisch. – ShadowRanger

+0

@ShadowRanger Guter Punkt! Danke für die Bewertung. Ich lasse es so für die Lesbarkeit, aber Sie sind völlig richtig Leistung. – scharette

Verwandte Themen