Hallo Ich habe Probleme mit einer Übung, die mich fragt, Code zu schreiben, der eine Funktion, 3 Wörterbücher und ein optionales Argument enthält.Compiler mein optionales Argument in Python nicht zu verstehen
Hier ist mein Code:
def make_album(artist_name, album_title, num_tracks):
"""Return artist and album title name."""
CD1 = {'sonic': artist_name, 'his world': album_title}
CD2 = {'shadow': artist_name, 'all hail shadow': album_title}
CD3 = {'silver': artist_name, 'dream of an absolution': album_title}
if num_tracks:
CD = artist_name + ' ' + album_title + ' ' + num_tracks
else:
CD = artist_name + ' ' + album_title
return CD.title()
disc = make_album('sonic', 'his world', '15')
print(disc)
disc = make_album('shadow', 'all hail shadow')
print(disc)
disc = make_album('silver', 'dream of an absolution')
print(disc)
Jedes Mal, wenn ich versuche, meinen Code jedoch zu laufen, mein Compiler heißt es, dass es 1 erforderlichen Positions Argument fehlt: 'num_tracks' für meine zweite print-Anweisung.
Aber das sollte kein Problem sein, wegen meiner If-else-Anweisung, es sei denn, ich habe meinen Code falsch geschrieben und der Compiler liest meine If-else-Anweisung nicht? Jede Rückmeldung würde sehr geschätzt werden, danke für Ihre Zeit.
Vielen Dank, ich habe einen Standard zu meinem optionalen Argument hinzugefügt. Wenn ich meinen Code ausführe, bekomme ich keinen Syntaxfehler mehr, aber '15' erscheint immer noch in meiner zweiten und dritten Druckanweisung, obwohl ich sie nicht in meine zweite und dritte Druckfunktion aufgenommen habe, und ich setze meine if-else-Anweisungen machen num_track optional. Hat jemand eine Ahnung, wo ich falsch gelaufen bin? – PhantomDiclonius
@PhantomDiclonius: Haben Sie den Standard als 'num_tracks =" 15 "' so eingestellt, wie es die (jetzt gelöschte) andere Antwort getan hat? Das würde es verursachen. Setze 'num_tracks = None' (das Standardzeichen für" not provided/not set "), und führe die Testüberprüfung für' num_tracks is not None' durch. Daher wird es nur verwendet, wenn ein reeller Wert angegeben wird. – ShadowRanger
Ja zuerst hatte ich num_tracks = '15 ', dann habe ich es auf None gesetzt, wie du gesagt hast und es hat funktioniert, danke. :) – PhantomDiclonius