single
Positio- ja Avainsanaisten Mielivaltaisten Argumenttien Yhdistelmä
Pyyhkäise näyttääksesi valikon
Tarkastellaan funktiota, joka laskee useiden tuotteiden kokonaishinnan ja mahdollistaa minkä tahansa määrän hintojen sekä valinnaisten avainsana-asetusten, kuten alennusten tai verojen, välittämisen.
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)
Yllä olevassa koodissa huomaat rivin settings.get('discount', 0).
Koska settings kerää avainsana-argumentit tavalliseen Python-sanakirjaan, käytetään sanakirjan .get()-metodia arvojen hakemiseen turvallisesti.
Jos yrität hakea avainta, jota ei ole sanakirjassa, hakasulkeilla (kuten settings['discount']), Python kaatuu ja antaa KeyError-virheen. .get()-metodi estää tämän sallimalla oletusarvon määrittämisen.
Syntaksi toimii näin:
dictionary.get(key, default_value)
key: asetuksen nimi, jota etsit (esim. 'discount' tai 'tax').
default_value: arvo, joka palautetaan, jos kyseistä avainta ei ole välitetty funktiolle.
Säännöt satunnaisten argumenttien yhdistämiseen
Paikalliset satunnaiset argumentit (*args)
*args kerää kaikki ylimääräiset paikalliset argumentit tupleen.
Tässä esimerkissä funktio voi ottaa vastaan minkä tahansa määrän tuotteen hintoja ilman, että niitä tarvitsee määritellä erikseen.
Esimerkiksi:
calculate_total_cost(500, 250, 100)
Tässä *prices on (500, 250, 100).
Avainsanalliset satunnaiset argumentit (**kwargs)
**kwargs kerää kaikki nimetyt (avainsana) argumentit sanakirjaan.
Tämän ansiosta funktio voi ottaa vastaan lisämääreitä, 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 funktiomäärittelyssä – 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ä
*args-rakennetta kerätäksesi pisteet (nimeä parametriscores) ja**kwargs-rakennetta kerätäksesi valinnaiset asetukset. -
Laske annettujen pisteiden keskiarvo summaamalla kaikki scores-arvot ja jakamalla niiden lukumäärällä:
Average=len(scores)sum(scores) -
Jos
'label'sisältää avaimen**kwargs, käytä sen arvoa raportin otsikkona; muussa tapauksessa käytä'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'-avainta 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