single
Kombination af positionelle og navngivne vilkårlige argumenter
Stryg for at vise menuen
Overvej en funktion, der beregner den samlede pris for flere varer, samtidig med at du kan angive et vilkårligt antal priser og valgfrie nøgleord-indstillinger såsom rabatter eller skatter.
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)
Regler for kombination af vilkårlige argumenter
Positionelle vilkårlige argumenter (*args)
*args samler alle ekstra positionelle argumenter i en tuple.
I dette eksempel kan funktionen tage et vilkårligt antal varepriser uden at skulle definere dem eksplicit.
For eksempel:
calculate_total_cost(500, 250, 100)
Her bliver *prices til (500, 250, 100).
Vilkårlige nøgleordsargumenter (**kwargs)
**kwargs samler alle navngivne (nøgleords-)argumenter i en ordbog.
Dette gør det muligt for funktionen at acceptere yderligere navngivne indstillinger såsom discount eller tax, selvom de ikke var foruddefinerede.
For eksempel:
calculate_total_cost(1000, 500, discount=10, tax=5)
Her bliver **settings til {'discount': 10, 'tax': 5}.
Kombination af begge
Det er muligt at bruge både *args og **kwargs i samme funktion for at opnå maksimal fleksibilitet — hvilket gør det muligt at håndtere et vilkårligt antal positionelle værdier og enhver kombination af navngivne indstillinger.
Placer altid *args før **kwargs i funktionssignaturen – hvis rækkefølgen byttes om, vil det resultere i en SyntaxError.
Swipe to start coding
Implementér en generate_report-funktion, der accepterer et vilkårligt antal numeriske karakterer og valgfrie nøgleord-indstillinger.
- Brug
*argstil at indsamle karakterer (navngiv parameterenscores) og**kwargstil at indsamle valgfrie indstillinger. - Beregn gennemsnittet af alle angivne karakterer.
- Hvis en
"label"-nøgle er til stede i**kwargs, bruges dens værdi som rapporttitel; ellers bruges"Report". - Hvis en
"passing_score"-nøgle er til stede i**kwargs, kontroller om gennemsnittet opfylder eller overstiger denne:- Hvis ja, tilføjes
"Status: Pass"til rapporten. - Hvis nej, tilføjes
"Status: Fail".
- Hvis ja, tilføjes
- Returnér resultatet som en formateret streng:
"{label} | Average: {avg:.2f} | {status}". Hvis ingen"passing_score"er angivet, udelades statusdelen:"{label} | Average: {avg:.2f}".
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat