MENÜ

Honlap címe

Előző - #1 Hello, World! | Tartalomjegyzék Következő - #3 Páratlan és páros

2. GYAKORLAT: HŐMÉRSÉKLET ÁTALAKÍTÁS

    convertToCelsius(32)  →  0,0
convertToFahrenheit(100)  →  212

A Celsius és Fahrenheit közötti átváltás alapvető számítást igényel, és jó gyakorlatot nyújt olyan függvények írásához, amelyek numerikus bemenetet vesznek fel, és numerikus kimenetet adnak vissza. Ez a gyakorlat teszteli a Python matematikai operátorainak használatára és a matematikai egyenletek Python-kódra fordítására való képességét.

Gyakorlat leírása

Írjon convertToFahrenheit()függvényt paraméterrel degreesCelsius. Ez a függvény ennek a hőmérsékletnek a számát adja vissza Fahrenheit-fokban. Ezután írjon egy°-os függvényt, amelynek neve convertToCelsius()fokFahrenheit paraméter , és ennek a hőmérsékletnek a számát adja vissza Celsius-fokban.

Használja ezt a két képletet a Celsius és Fahrenheit közötti átváltáshoz:

  • Fahrenheit = Celsius × (9/5) + 32
  • Celsius = (Fahrenheit - 32) × (5/9)

Ezek a Python- assertutasítások leállítják a programot, ha feltételük False. Másolja őket a megoldási program aljára. Az Ön megoldása akkor helyes, ha a következő assertállítások feltételei mind igazak :

assert convertToCelsius(0) == -17.77777777777778

assert convertToCelsius(180) == 82.22222222222223

assert convertToFahrenheit(0) == 32

assert convertToFahrenheit(100) == 212

assert convertToCelsius(convertToFahrenheit(15)) == 15

 

# A kerekítési hibák enyhe eltérést okoznak:

assert convertToCelsius(convertToFahrenheit(42)) == 42.00000000000001

Próbáljon megoldást írni a leírásban szereplő információk alapján. Ha továbbra is problémái vannak ennek a gyakorlatnak a megoldásával, további tippekért olvassa el a Megoldástervezés és a Különleges esetek és Gotchák című részt.

Előfeltétel fogalmak: matematikai operátorok

Megoldás tervezése

Gondolja át, hogyan fordíthatja le a gyakorlat leírásában szereplő matematikai egyenleteket Python-kódra. A Celsiusról Fahrenheitre való konvertáláshoz a „Celsius” a degreesCelsius paraméter, a × szorzójel helyettesíthető a Python * operátorával, a zárójeleknek és más matematikai szimbólumoknak pedig közvetlen Python megfelelői vannak. Gondolhat a „Fahrenheit =” és „Celsius =” részekre a Python- return utasítások képletében.

Ezek a függvények egy sor hosszúak lehetnek: egy return utasítás, amely kiszámítja a képlet eredményét, és visszaadja azt.

Különleges esetek és Gotchák

Amikor a 42 Celsius-fokot Fahrenheit-re, majd vissza Celsius-fokra konvertálja az Állítások részben, észrevehette, hogy nem pontosan 42-t kap, hanem 42.00000000000001-et. Ezt az apró töredékrészt a kerekítési hibák okozzák. A számítógépek nem képesek tökéletesen ábrázolni minden számot tört részekkel. Például, ha beírja a print(0.1 + 0.1 + 0.1) parancsot a Python interaktív shelljébe, akkor az nem 0.3-at ír ki , hanem a 0.30000000000000004.

A Python programozási nyelv nem okoz ilyen kerekítési hibákat. Ehelyett az összes számítógép által használt lebegőpontos számokra vonatkozó műszaki szabványból származnak. Minden programozási nyelvnek ugyanazok a kerekítési hibái vannak. Azonban, hacsak nem egy bankhoz vagy atomreaktorhoz ír szoftvert, ezek a kisebb pontatlanságok valószínűleg nem számítanak. A További olvasás rész

Most próbáljon meg egy megoldást írni az előző szakaszok információi alapján. Ha továbbra is problémái vannak a gyakorlat megoldásával, olvassa el a Megoldássablon részt további tippekért.

Megoldás sablon

Próbáljon először megoldást írni a semmiből. De ha nehézségei vannak, akkor a következő részprogramot használhatja kiindulási helynek. Másolja ki a következő kódot a https://invpy.com/converttemp-template.py webhelyről , és illessze be a kódszerkesztőbe. Cserélje ki az aláhúzást kódra, hogy működő programot készítsen:

def konvertálás Fahrenheitbe (Celsius fok):

    # Számítsa ki és adja vissza a Fahrenheit fokot:

    vissza ____ * (9/5) + 32

 

 

def convertToCelsius (Fahrenheit fok):

    # Számítsa ki és adja vissza a Celsius fokokat:

    vissza (____ - 32) * (____ / ____)

A gyakorlat teljes megoldását az A függelék és a https://invpy.com/converttemp.py tartalmazza . A program minden lépését megtekintheti, amint az egy hibakereső alatt fut a https://invpy.com/converttemp-debug/ címen .

További irodalom

Használhatja a Python decimalmodult a törtszámok pontosabb ábrázolására, mint a lebegőpontos értékek. Erről a modulról a Python Module of the Week blogon tájékozódhat a https://pymotw.com/3/decimal/ címen .

Az egyik programozási technika a kerekítési hibák elkerülésére, hogy ragaszkodjon az egész számokhoz: ahelyett, hogy 1,25 dollárt lebegő értékként ábrázolna, 1.25 használhatja az egész számot 125125 centért, vagy ahelyett, hogy 1,5 percet ábrázolna lebegőpontként, 1.5 használhatja az egész számot 9090 másodpercig vagy akár 90 000-ig . 90 000 ezredmásodperc. Az egész számok és a decimális modul Decimal objektumai nem szenvednek olyan kerekítési hibáktól, mint a lebegőpontos számok esetében.

Előző - #1 Hello, World! | Tartalomjegyzék Következő - #3 Páratlan és páros

 

Asztali nézet