2016-03-23 12 views
1

Ich bin ein Neuling und nehme eine Online-Python-Klasse durch eine Online-Arbeitsmappe. Ich kann nicht herausfinden, wie man die Ausgabe zur Anzeige wie das gezeigte Beispiel bekommt:Mischen von Schlüsselwörtern und Standardargumenten in Python 3.5.1

Problemanweisungen: Schreiben Sie eine Funktion number_of_pennies(), die die Gesamtanzahl von Pennies gibt, die eine Anzahl von Dollar und (optional) gegeben werden eine Reihe von Pfennigen. Ex: 5 Dollar und 6 Pfennige liefert 506.

Hier ist, was ich habe:

def number_of_pennies(dollars =(),pennies=()) 

    return number_of_pennies 
print(number_of_pennies(5, 6)) # Should print 506 
print(number_of_pennies(4)) # Should print 400 

Dank Ihrer Hilfe Ich habe gerade es dazu:

def number_of_pennies(dollars = 0,pennies=0): 
    number_of_pennies= (dollars * 100) + pennies 
    return number_of_pennies 
print(number_of_pennies(5, 6)) # Should print 506 
print(number_of_pennies(4)) # Should print 400 
+1

Multiplizieren Sie Dollar um 100, und fügen Sie Pennies hinzu - das wäre der erste Schritt. .Rest wäre Edge Case Handling. Warum versuchst du das nicht zuerst und redest die Frage, ob du immer noch feststeckst. – karthikr

+1

Warum verwenden Sie leere 'tuple's (Klammern) als Standardwerte für Dollars und Pennies? Wenn jemand einen Dollar- oder Penny-Betrag nicht übergibt, wäre es dann vernünftiger, stattdessen "Dollar = 0, Pennies = 0" zu verwenden? – Bahrom

Antwort

1

Standard Argumente werden verwendet, wenn Der Anrufer liefert keinen Wert. Also, was sollte der Standard sein? In Ihrem Fall, wenn der Benutzer keine Dollars liefert, scheint Null Dollar eine vernünftige Wahl zu sein. Gleiches mit Pennies. Da number_of_pennies(4)400 sein sollte, wissen Sie, dass sie wollen, dass Dollar der erste Parameter ist. Der Rest ist nur die Mathematik.

number_of_pennies ist nur der Name der Funktion, die eine seltsame Sache wäre, um zurückzukehren. In der Tat, wenn Sie es versuchen, erhalten Sie etwas wie <function number_of_pennies at 0x7ff4e962d488>, was bedeutet, dass die Funktion ein eigenes Funktionsobjekt zurückgegeben. Stattdessen geben Sie die Daten zurück, die Sie berechnen ... das ist viel nützlicher!

>>> def number_of_pennies(dollars=0, pennies=0): 
...  return dollars * 100 + pennies 
... 
>>> print(number_of_pennies(5,6)) 
506 
>>> print(number_of_pennies(4)) 
400 
+0

Vielen Dank Leute! Ich folgte deinen Vorschlägen und es hat funktioniert! –