Välkommen till linuxportalen.se!

Linuxportalen.se är Sveriges största och aktivaste webbplats för användare av öppen- och fri programvara.

Du besöker Linuxportalen.se som gäst vilket begränsar din möjlighet att använda webbplatsens alla funktioner. Genom att registera dig som medlem får du inte bara möjlighet att söka bland webbplatsens innehåll, skapa nya och delta i befintliga diskussioner, skapa din egen blogg, kommunicera med andra medlemmar genom privata meddelanden och delta i omröstningar. Du får också tillgång till Veckans Kadavro - en seriestrip unikt skapad för Linuxportalen.se!

Registeringen sker snabbt och är helt kostnadsfri - tveka inte, bli medlem idag!

Python3 - bättre kod (beginner)

Hej, jag undrar om någon python-expert har lust att kolla på min kod som jag bifogar?

Jag skulle vilja ha ett utlåtande om den är bra skriven eller om den är helt åt skogen, kanske massa onödig kod tex...

http://dl.dropbox.com/u/2893068/alkokollen.py

Alternativ för kommentarvisning

Välj ditt önskade sätt att visa kommentarerna och klicka på "Spara" för att verkställa dina ändringar.

nisse74s bild

Några kommentarer och förslag men ingen kod. Det är bättre att du övar på det själv. Ta inte kritiken hårt. Alla är nybörjare i början.

Namngivningen är inte alltid konsekvent. Välj antingen engelska eller svenska nu är det beer wine och sprit. Exempelvis vad betyder Sp som avslutar en del variabelnamn? Namngivning är faktiskt en av de svåraste sakerna att få till bra.

40? vad är det? (Ett magic number). Minimum är att du skriver en kommentar som talar om vad 40 står för eller helst så introducerar du en "konstant". Python har inga konstanter men det är brukligt att namnge en konstant variabel Smile enligt följande sätt så man känner igen konstanter. 

MINUTER_PER_TIMMA = 60

Sedan använder du konstanten istället för talet i alla beräkningar. (Dessutom ändra aldrig konstanter)

Varför while-satserna? Var avsikten att man skulle kunna ange och räkna samman tex olika sorters öl? Dvs drack x1 cl av ÖL A som innehåller y1 % och sedan x2 cl av öl B som innehåller y2 %.
Men som det är skrivet nu så går programmet bara igenom while-satsen som mest en gång. Då finns det inget behov av while. Då räcker det med en if-sats.  while är för upprepning av något från noll till många gånger. Är det något som ska ske noll eller en gång så är det if som ska användas.

Det är en bugg i delen där du gör beräkning på vin. Du använder fel variabel. Så resultatet för vin beräkningen blir alltid 0...

if?/(while?), inmatningarna och uträkningen för de tre dryckessorterna är samma. Det enda som egentligen  skiljer är i texten:  öl, ölen, vin, vinet osv. Titta på koden i de tre delarna och stirra på den tills du ser att det är samma sak skriven tre gånger egentligen.

Här skulle du kunna introducera en funktion som tex tar namnet/namnen ("öl", "ölen") på drycken som parametrar och som returnerar själva uträkningen. Sedan kan du göra tre funktionsanrop ett för varje dryck. Men du kanske inte kommit till "kapitlet" om funktioner än. Men i så fall är det kanske snart dags att göra det.

Vad händer när någon skriver tjugo istället för 20 när du frågar efter ett tal?
Antingen kontrollerar du att strängen går att omvandla till ett tal innan du försöker göra det. Eller så gör du precis som nu men att du fångar undantaget som kastas när konverteringen till float misslyckas. Läs om undantag (Exception). Gör användaren fel så skriv ut ett felmeddlande och be dem skriva in talet igen.

Hanteringen att läsa in ett tal kanske är en lämplig kandidat att omvandla till en egen funktion?

Själva alkoholberäkningarna kan jag inte kommentera om de är rätt eller rätt skrivna för de känner jag inte till.

Antalet kodrader borde bli <= hälften mot vad det är nu utan att det för den skull blir kryptiskt. Dessutom blir det enklare att läsa och förstå koden.

krippas bild

Tack för dina tips, precis vad jag behöver. Som du förstår så är jag  riktigt dålig på det här med programering, men så länge det är kul så...

While skrev jag för att om man kör koden utan while så stängs programmet ner om man tex bara trycker ner "enter". Men jag ska kolla upp "if". Sedan med variabelnamn så har jag inte det tänken att andra ska läsa, utan det jag skriver är ju bara så jag själv förstår, vilket förstås är helt fel:)

Har jag inte med tre olika sorter drycker eftersom det krävs tre olika uträkningar, har man druckit 2st 50 cl 4.3% öl, 20 cl 12% vin och 2 cl 40% sprit så måste man väl räkna ut var för sig???

100cl öl * 4,3 volymprocent / 40 för att få fram hur många cl ren 40% sprit 2st 50cl 4.3% öl innehåller.

100*4.3= 430/40=10cl

Har haft fullt upp med annat privat så jag har inte hunnit med någon programering. Men nu har jag 4 veckor semester så jag ska försöka hinna med, men jag har hittat en Sam440ex inkl. AmigaOS4.1 som jag antagligen kommer att köpa, så det blir nog en del pill med den också.

Kom gärna med mera tips!!!

Behöver du en erfaren snickare? Kontakta mig på 0735462046 eller maila larssons.byggtjanst@gmail.com

nisse74s bild

Hej igen. Har också varit lite upptagen. Det viktigaste är att man har kul som du skriver. Det hjälper om man hittar på något roligt projekt att försöka göra. Samtidigt gäller det att inte bli överambitiös i början. Risken är att det inte blir klart. Dessutom är det svårt i början att organisera och strukturera program. Om man då skriver större program blir det bara en soppa av det och att man kanske tappar lusten. Det känns bra när man får något "klart".

Läs olika böcker. En del böcker passar olika personer olika bra.  Så ge inte upp även om du läst 2-3 böcker. Finns säkert film på föreläsningar på nätet att kika på. Läs kod som andra skrivit.

Nu när jag läst din förklaring angående while så förstår jag varför.

Nej, tanken kanske inte är att andra ska läsa koden (än). Hur som helst är det onödigt att få dåliga vanor. Dessutom om du kommer tillbaka till programmet om två år så kanske även du har glömt vad vissa namn står för.
Ja. Uträkningarna ska göras var för sig. Vad jag menade var att uträkningarna är likadana det är bara värdena som användaren skriver in som är olika. (+ texten som skrivs ut när du frågar).
Lite kod: http://ubuntuone.com/p/15CF/

Man glömmer fort hur det är att vara nybörjare på programmering. Särskilt hur det var precis när man började.  Det tog flera år och många start försök som kom av sig innan jag kom i gång på allvar.

Du är också en gammal amiga användare? När man vill ha kul så ska man köra amiga. Jag brukar med jämna mellanrum kika på de olika (moderna) alternativen.

  • aros (icaros, broadway), test kör ibland.
  • Amigaos 4.1 och Sam___ maskiner. De är väl fläktlösa. Precis som riktiga datorer ska vara.
  • Minimig, för basic  jag önskar möjlighet till mer RAM, snabbare CPU osv.
  • fpgaarcade replay, kanske är svaret på föregående önskan, ej färdig heller.
  • Natami, ej färdig. Pris?
  • X1000, ej färdig. Pris?

I dagsläget nöjer jag mig med 3.1 och uae. Amiga kan man prata hur länge som helst om men det här är ju inte rätt forum.

Men amigaos 4.1 kommer väl med python installerad? Perfekt för dig.

krippas bild

Hej, tack för din feedback, exemplen i den förstår jag bättre än dom i boken(Head first programming). Jag ska titta på dina exempel lite mer bara, det där med att man "måste" definiera float går inte riktigt in:)

Jag satt igår och gjorde om mitt program och blev faktiskt ganska nöjd http://dl.dropbox.com/u/2893068/alkoholkollen_v_0.2.py  Det som kvarstår nu är ett GUI

Japp, har en A1200 uppkopplad i förrådet, underbart att koppla av framför den med en god öl och lyssna på lite moddar eller spela gamla spel. Det är som du säger, det är en kul dator.

Jag tankade ner icaros för nån vecka sedan, men jag vågar inte riktigt installera det, vet inte hur det skulle fungera med grub efteråt, i dagsläget kör jag dualboot win7 / openSuse, och jag får rysningar av starthanterare. Men icaros-live fungerar ju bra bortsett att jag endast får 1280x1024.

Natami var nytt för mig, men på X1000 har jag väntat i snart 2 år, A-EON som utvecklar maskinen sade i fjol - "2010, the year we came back", och i år säger dom - "2011, the year we cam back". Inte undra på att många amiganer börjar bli tveksamma till att den någonsin kommer.

Läser man Amiga-forum verkar de flesta amiganer spända och förväntningsfulla på X1000, man läser att de sparar pengar för köpa den när/om den kommer. A-EON har väl nämnt ett pris norr om 1500£.

Japp, python ska ha varit implementerat(heter det så?) sedan AOS4 vad jag har förstått, så det är bara att köra på:)

Behöver du en erfaren snickare? Kontakta mig på 0735462046 eller maila larssons.byggtjanst@gmail.com

nisse74s bild

Jag var lite otydlig angående att inputFloat i exemplet måste vara definerad först. (Inget som jag egentligen behövde nämna, lyckades nog bara krångla till det för dig). Tolken måste träffa på en funktions definition innan den används under körning. Har gjort ett litet exempel som kanske klar gör lite bättre. http://ubuntuone.com/p/15h3/

Har heller inte installerat icaros. icaros vill väl installera sin egna grub. Vilket ska gå att hoppa över. Men sedan måste man in i grub från linux och konfigurera osv. Lite mycke pyssel och jobbigt om det blir fel.

Amiganer har blivit vana vid att vänta. Jo X1000 verkar bra. Det är kul att det händer en hel del på amiga fronten nu igen. Samt att rättighetsproblem osv nyligen har ordnat upp sig (verkar det som i alla fall).

Din nya version  av ditt program kommer jag inte åt får Error (404) . Fel länk? Inte publik?

Vilket GUI toolkit tänkter du använda?

 

krippas bild

http://dl.dropbox.com/u/2893068/alkoholkollen_v_0.2.py nu då?

Vet ej vilket GUI, men det lutar åt Qt, det verkar vara det som gäller nu, samt att det börjar komma till AOS4.

Hört(läst) att Tk är gammalt. Sedan finns det ju många Wx-guider, så jag vet inte än, tips?

Behöver du en erfaren snickare? Kontakta mig på 0735462046 eller maila larssons.byggtjanst@gmail.com

nisse74s bild

Lite ny feedback i filen. http://ubuntuone.com/p/15qc/

Om Qt är på gång till AOS4 så verkar det vara rätt väg för dig.

Jag har använt Tk men det var länge sedan, jag vet att förr såg det bedrövligt gammaldags ut under linux i alla fall. WxPython har jag använt  litegrann. Mest har jag använt pygtk/gnome för jag har föredragit gnome på skrivbordet. Men det var länge sedan jag skrev något för skrivbordet så tyvärr så är mina python gui toolkit kunskaper lite inaktuella.

 

FoHs bild

Upptäckte precis att Full Circle Magazine har haft en "How to program Python"-serie sedan nummer 27. De är nu uppe i nummer 50. Ingen aning om vad det är för kvalitet på det hela ännu, ska börja läsa från nummer 16 eftersom det var där jag slutade Tongue Men iaf, kanske värt en titt!

fullcirclemagazine.org/downloads/

krippas bild

Jag gjorde en snabb titt, det verkar som dom kör med 2.5, vilket inte jag tänker göra, men jag ska göra en närmare titt på't. BTW riktigt bra sida, har aldrig tidigare varit inne på den....

Behöver du en erfaren snickare? Kontakta mig på 0735462046 eller maila larssons.byggtjanst@gmail.com