Kezdőoldal » Számítástechnika » Programozás » Lehet ezt egyszerűbben (alapok)?

Tobak112 kérdése:

Lehet ezt egyszerűbben (alapok)?

Figyelt kérdés

Jövőre Proginfóra fogok járni, ezért, hogy ne érjen teljes sokk az elején elkezdtem autodidakta módon kicsit tanulgatni programozni, elsőnek python nyelven. Azt szeretném kérdezni, hogy a következő feladatra van-e egyszerűbb, jobb, kevesebb változót igénylő megoldás? Mert így nekem egy kicsit komplikáltnak tűnik.


A feladat: Írjon egy programot, ami a kiindulásul radiánokban megadott szögeket fokokba, percekbe  és másodpercekbe számolja át


Megoldás:


rad=float(input("Adja meg a kiindulási radiánt:"))


fok=float(rad*57.345)

fokEgesz=int(rad*57.345)


fokPerc=float((fok-fokEgesz)*60)

fokPercEgesz=int((fok-fokEgesz)*60)


fokMasodEgesz=int((fokPerc-fokPercEgesz)*60)


print("Az ön által radiánban megadott érték fokokban:", fokEgesz,"fok",fokPercEgesz,"szögperc",fokMasodEgesz,"szögmásodperc")


Előre is köszönöm a válaszokat :)



2016. nov. 1. 03:33
 1/7 anonim ***** válasza:

A Pythonnak igazából van beépített függvénye, ami radiánból fokra, és fokból radiánba vált (meg fogsz lepődni, radians és degrees a nevük), mindkettő a math függvénykönyvtárban.


Amúgy nem tudom, pontosan hova készülsz, de nem kell nagyon összetojnod magad, a proginfó képzés a programozást eléggé az alapoktól kezdi építeni, azzal az indokkal, hogy "nem mindenki jön ide programozási ismeretekkel" :D

2016. nov. 1. 04:46
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:

Annyit szerintem ezen a szinten is lehet rajta faragni, hogy nem számolsz ki újra mindent az egész értékekehez.

fokEgesz = int(fok)

stb.

Haladóbb szinten meg úgyis mindig az lesz az első kérdés: van-e már erre kész könyvtár? 😃

2016. nov. 1. 06:44
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:
Ha az ELTE-re akarsz jönni, matematikát tanulj, a programnyelvek oktatása nagyon alapszinten folyik csak.
2016. nov. 1. 10:09
Hasznos számodra ez a válasz?
 4/7 anonim ***** válasza:

Először is átváltásnál érdemes mindig a beépített konstansokat és/vagy függvényeket használni hogy pontos legyen a számítás. Nem nagyon fordul elő olyan eset hogy neked kéne beadnod kézzel egy ismert konstanst.


fok = rad*180/math.pi

vagy

fok = math.degrees(rad)


Másrészt köved figyelemmel a típusokat. Ha valami már float, nem váltsd át még egyszer floatba mert egyfelől felesleges kód, másfelől pedig megzavarja az embert: ha floatba váltjuk akkor miben volt eddig?


Ezek után pedig az átváltás: ilyen átváltásoknál maradékos osztást szoktunk használni. Egész osztással megkapjuk az egész részét a foknak, maradékos osztással megkapjuk a maradékot amit tovább tudunk számolni percre, majd ugyan így másodpercre is.


123 perc = 123//60 óra (=2), 123%60 perc (=3)


Amint látod érdemes a nagy értékek felől indulni és leosztani ahelyett hogy a kisebbeket szorzod fel mert akkor nem kell tárolni a részeredményt.


12.34 fok = 44424 másodperc (12.34 * 60 * 60)

44424 másodperc = 44424 // 60 perc (=740) és 44424 % 60 másodperc (=24)

740 perc = 740 // 60 fok (=12) és 740 % 60 (=20) perc


Így 12.34 fok = 12 fok, 20 perc, 24 másodperc


És akkor jönnek megint a beépített függvények: ha egyszer meg akarod tudni egy szám egész és tört részét is akkor nem kell külön elvégezni az egész és maradékos osztást, el lehet azt egyszerre is a divmod függvénnyel, így a végeredmény valahogy így néz ki:


rad = float(input("Balh blah: "))

perc, másodperc = divmod(math.degrees(rad) * 3600, 60)

fok, perc = divmod(perc, 60)

print("Blah blah: ", fok, perc, másodperc)


Természetesen úgy is jó ahogy te csináltad, csupán két elérő megoldás ugyan arra a problémára. Sokszor ha rövidítesz a kódon csak átláthatatlanabb lesz, ami viszont szúrta a szemem az ez és az ehhez hasonló sor párok:


fokPerc=float((fok-fokEgesz)*60)

fokPercEgesz=int((fok-fokEgesz)*60)


helyett legyen


fokPerc = (fok - fokEgesz) * 60

fokPercEgesz = int(fokPerc)

2016. nov. 1. 10:43
Hasznos számodra ez a válasz?
 5/7 A kérdező kommentje:
Köszönöm a válaszokat :) PTE-re tervezek menni a távolsági dolgok miatt. Azt hiszem le kéne cserélnem a könyvet, amiből tanulok: Gérard Swinnen: Tanuljunk meg programozni Python nyelven. Itt annyi mindent felemlegettetek aminek a könyv még a közelében sem volt, hogy az valami hihetetlen. Az input függvényt a 6. leckében ismerteti, úgyhogy utánanéztem neten, de kezdek rájönni, hogy (ha nem gondolom rosszul), logikátlanul felépített könyv+Python 2-t tanít, nem 3-at. SWzóval köszönöm még egyszer a segtséget. Esetleg, ha valami jó Python 3-as könyvet tudnátok ajánlani, azt megköszönném még
2016. nov. 1. 12:44
 6/7 A kérdező kommentje:
Azt kihagytam, hogy ez 5.fejezetes feladat, de már a 4.-nél is voltak olyan feladatok, amiben input-ot kellett használni(És mint már mondtam, ilyen beépített könyvtárakat, meg mindenfélét még nem is említett)
2016. nov. 1. 12:52
 7/7 anonim ***** válasza:

Ehhez a feladathoz nem is kellene input(), ez nem a könyv hibája...

A rad változónak értéket adsz és már számolhatsz is.

2016. nov. 1. 14:44
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!