single
Paikallisten ja avainsanallisten mielivaltaisten argumenttien yhdistelmä
Pyyhkäise näyttääksesi valikon
Tarkastellaan funktiota, joka laskee useiden tuotteiden kokonaiskustannuksen ja mahdollistaa minkä tahansa määrän hintoja sekä valinnaisia avainsana-asetuksia, kuten alennuksia tai veroja.
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)
Säännöt mielivaltaisten argumenttien yhdistämiseen
Paikalliset mielivaltaiset argumentit (*args)
*args kerää kaikki ylimääräiset paikalliset argumentit tupleen.
Tässä esimerkissä funktio voi ottaa minkä tahansa määrän tuotehintoja ilman, että niitä tarvitsee määritellä erikseen.
Esimerkiksi:
calculate_total_cost(500, 250, 100)
Tässä *prices on (500, 250, 100).
Avainsanalliset mielivaltaiset argumentit (**kwargs)
**kwargs kerää kaikki nimetyt (avainsana) argumentit sanakirjaan.
Tämän avulla funktio voi ottaa vastaan ylimääräisiä nimettyjä asetuksia, kuten discount tai tax, vaikka niitä ei olisi ennalta määritelty.
Esimerkiksi:
calculate_total_cost(1000, 500, discount=10, tax=5)
Tässä **settings on {'discount': 10, 'tax': 5}.
Molempien yhdistäminen
Voit käyttää sekä *args että **kwargs samassa funktiossa saavuttaaksesi maksimaalisen joustavuuden – mahdollistaen minkä tahansa määrän paikallisia arvoja ja minkä tahansa yhdistelmän nimettyjä asetuksia.
Aseta aina *args ennen **kwargs funktioallekirjoituksessa – järjestyksen vaihtaminen aiheuttaa SyntaxError-virheen.
Pyyhkäise aloittaaksesi koodauksen
Toteuta generate_report-funktio, joka hyväksyy mielivaltaisen määrän numeerisia pisteitä sekä valinnaisia avainsana-asetuksia.
- Käytä
*argskerätäksesi pisteet (nimeä parametriscores) ja**kwargskerätäksesi valinnaiset asetukset. - Laske annettujen pisteiden keskiarvo.
- Jos
"label"sisältää avaimen**kwargs, käytä sen arvoa raportin otsikkona; muussa tapauksessa käytä otsikkona"Report". - Jos
**kwargssisältää avaimen"passing_score", tarkista täyttyykö tai ylittääkö keskiarvo sen:- Jos kyllä, lisää raporttiin
"Status: Pass". - Jos ei, lisää
"Status: Fail".
- Jos kyllä, lisää raporttiin
- Palauta tulos muotoiltuna merkkijonona:
"{label} | Average: {avg:.2f} | {status}". Jos"passing_score"ei ole annettu, jätä status pois:"{label} | Average: {avg:.2f}".
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme