single
Combinatie van Positionele en Sleutelwoord Willekeurige Argumenten
Veeg om het menu te tonen
Beschouw een functie die de totale kosten van meerdere items berekent, waarbij je een willekeurig aantal prijzen en optionele keyword-instellingen zoals kortingen of belastingen kunt doorgeven.
12345678910111213141516171819202122232425def calculate_total_cost(*prices, **settings): subtotal = sum(prices) discount = settings.get("discount", 0) tax = settings.get("tax", 0) discount_amount = subtotal * (discount / 100) taxed_amount = (subtotal - discount_amount) * (1 + tax / 100) print(f"Subtotal: ${subtotal:.2f}") if discount > 0: print(f"Discount: {discount}% (-${discount_amount:.2f})") else: print("No discount applied.") if tax > 0: print(f"Tax: {tax}% (+${taxed_amount - (subtotal - discount_amount):.2f})") print(f"Final total: ${taxed_amount:.2f}") print() # Examples of using the function calculate_total_cost(1000, 250, 50) calculate_total_cost(1200, 800, discount=10) calculate_total_cost(500, 750, 250, discount=5, tax=8)
Regels voor het combineren van willekeurige argumenten
Positionele willekeurige argumenten (*args)
*args verzamelt alle extra positionele argumenten in een tuple.
In dit voorbeeld kan de functie een willekeurig aantal itemprijzen accepteren zonder deze expliciet te hoeven definiëren.
Bijvoorbeeld:
calculate_total_cost(500, 250, 100)
Hier wordt *prices (500, 250, 100).
Willekeurige sleutelwoordargumenten (**kwargs)
**kwargs verzamelt alle benoemde (sleutelwoord)argumenten in een woordenboek.
Hierdoor kan de functie extra benoemde instellingen accepteren, zoals discount of tax, zelfs als deze niet vooraf zijn gedefinieerd.
Bijvoorbeeld:
calculate_total_cost(1000, 500, discount=10, tax=5)
Hier wordt **settings {'discount': 10, 'tax': 5}.
Beide combineren
Je kunt zowel *args als **kwargs in dezelfde functie gebruiken voor maximale flexibiliteit — hiermee kun je elk aantal positionele waarden en elke combinatie van benoemde instellingen verwerken.
Plaats altijd *args vóór **kwargs in de functiedefinitie – het omdraaien van de volgorde resulteert in een SyntaxError.
Veeg om te beginnen met coderen
Implementeer een functie generate_report die een willekeurig aantal numerieke scores en optionele keyword-instellingen accepteert.
- Gebruik
*argsom scores te verzamelen (noem de parameterscores) en**kwargsom optionele instellingen te verzamelen. - Bereken het gemiddelde van alle opgegeven scores.
- Als er een sleutel
"label"aanwezig is in**kwargs, gebruik dan de waarde hiervan als rapporttitel; gebruik anders"Report". - Als er een sleutel
"passing_score"aanwezig is in**kwargs, controleer dan of het gemiddelde hieraan voldoet of deze overschrijdt:- Zo ja, voeg
"Status: Pass"toe aan het rapport. - Zo nee, voeg
"Status: Fail"toe.
- Zo ja, voeg
- Retourneer het resultaat als een opgemaakte string:
"{label} | Average: {avg:.2f} | {status}". Als er geen"passing_score"is opgegeven, laat dan het statusgedeelte weg:"{label} | Average: {avg:.2f}".
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.