Meddelande
På gamla.pluggakuten.se kan du fortfarande läsa frågorna och svaren som ställts, men du kan inte skapa ett nytt konto eller nya trådar. Nya frågor och nytt konto skapar du på det nya forumet, välkommen dit!
Räkna total kostnad(resa)
- emehraj
- Medlem
Offline
- Registrerad: 2016-12-19
- Inlägg: 17
Räkna total kostnad(resa)
Hej på er,
Jag håller på att lära mig Python, själv studier, och vill ha lite hjälp men en uppgift. Jag vill räkna total kostnad på en resa, olika hotel (med olika pris/natt) och att hyra en bil( olika medel och pris). Jag började så här:
print "Detta program raknar det totala kosnad for resa"
print "Svara pa nagra fragor"
days = raw_input("Hur manga dagar? ")
print "Val av hotel"
print "Hotel A 180/natt, Hotel B 200/natt och Hotel C 250/natt"
hotel = raw_input("Vilken Hotel? ")
if hotel == "A" or "a" :
cost = 180 * int(days)
print cost
elif hotel == "B" or "b" :
cost = 200 * int(days)
print cost
elif hotel == "C" or "c" :
cost = 250 * int(days)
print cost
och några if sats för hyr bil......... men jag vill använda mig av List och Dictionaries men kan inte riktig, så här ungefär:
hotel = {"A" : 150, "B" : 200, "C" : 250}
car = {"D" : 80, "E" : 120, "F" : 150}
print
print "Ett program som raknar total kostnad for resa"
print
print "Hotel A kosta 150/natt, B kostar 180/natt och C kostar 200/natt "
print
sum_1 = raw_input("Vilken hotel? ")
print
days_1 = raw_input("Hur manga dagar? ")
def kosnad(resa):
kan någon hjälpa mig?
Tack på förhand
Senast redigerat av emehraj (2016-12-20 09:21)
- Henrik E
- Medlem
Offline
- Registrerad: 2015-09-22
- Inlägg: 3189
Re: Räkna total kostnad(resa)
Det du kallar sum_1 bör heta h och days_1 bör heta d och då blir
cost=hotel(h)*int(d)
- annlu
- Medlem
Offline
- Registrerad: 2016-11-02
- Inlägg: 58
Re: Räkna total kostnad(resa)
Du är absolut inne på rätt spår när du vill använda dictionaries istället för alla if och else. Det är inte svårt, har du testat att göra en for loop än?
Om du har hotel = {"A": 150, "B": 200, "C": 250} bestående av par med key: value så kan du loopa över informationen på olika sätt. En vanlig loop (for h in hotel) går igenom keyorden för ditt dictionary, och det kan du sedan använda för att komma åt värdet:
Kod:
days = raw_input("Hur många dagar? ") print "Val av hotel:" for h in hotel: print("Hotel {} kostar {}/natt".format(h, hotel[h])) user_hotel = raw_input("Vilket Hotell? ") print "Hotellet du valt kostar:", hotel[user_hotel] print "Totalt pris:", int(days)*hotel[user_hotel]
Observera dock att Python dictionary inte har någon ordning. Vill du absolut ha hotellen utprintade i ordningen A, B, C kan du tex kolla in OrderedDict från collections.
Hur du sedan samlar ihop och adderar de olika kostnaderna och vad du väljer att räkna ut direkt eller med hjälp av en funktion som def kosnad(resa) får du bestämma själv. Det känns lite som att du med variabeln resa nosar på objekt och klasser? Det skulle vara en till bra idé i så fall, att skapa en klass Resa som du kan använda för att spara alla val som användaren gör och som kan ha en funktion som räknar ut den totala kostnaden.
Ett tips du kanske är intresserad av (fast du inte frågat om det) är att lägga till # -*- coding: utf-8 -*- precis i början på din fil där du skriver din kod. Då får du UTF-8 encoding och kan använda fler speciella tecken, såsom å, ä, ö
Kod:
# -*- coding: utf-8 -*- print "Detta program räknar den totala kosnaden för resan" print "Svara på några frågor"
Senast redigerat av annlu (2016-12-19 18:49)
- emehraj
- Medlem
Offline
- Registrerad: 2016-12-19
- Inlägg: 17
Re: Räkna total kostnad(resa)
Henrik E skrev:
Det du kallar sum_1 bör heta h och days_1 bör heta d och då blir
cost=hotel(h)*int(d)
Tack Henrik, ska testa
- emehraj
- Medlem
Offline
- Registrerad: 2016-12-19
- Inlägg: 17
Re: Räkna total kostnad(resa)
annlu skrev:
Du är absolut inne på rätt spår när du vill använda dictionaries istället för alla if och else. Det är inte svårt, har du testat att göra en for loop än?
Om du har hotel = {"A": 150, "B": 200, "C": 250} bestående av par med key: value så kan du loopa över informationen på olika sätt. En vanlig loop (for h in hotel) går igenom keyorden för ditt dictionary, och det kan du sedan använda för att komma åt värdet:Kod:
days = raw_input("Hur många dagar? ") print "Val av hotel:" for h in hotel: print("Hotel {} kostar {}/natt".format(h, hotel[h])) user_hotel = raw_input("Vilket Hotell? ") print "Hotellet du valt kostar:", hotel[user_hotel] print "Totalt pris:", int(days)*hotel[user_hotel]Observera dock att Python dictionary inte har någon ordning. Vill du absolut ha hotellen utprintade i ordningen A, B, C kan du tex kolla in OrderedDict från collections.
Hur du sedan samlar ihop och adderar de olika kostnaderna och vad du väljer att räkna ut direkt eller med hjälp av en funktion som def kosnad(resa) får du bestämma själv. Det känns lite som att du med variabeln resa nosar på objekt och klasser? Det skulle vara en till bra idé i så fall, att skapa en klass Resa som du kan använda för att spara alla val som användaren gör och som kan ha en funktion som räknar ut den totala kostnaden.
Ett tips du kanske är intresserad av (fast du inte frågat om det) är att lägga till # -*- coding: utf-8 -*- precis i början på din fil där du skriver din kod. Då får du UTF-8 encoding och kan använda fler speciella tecken, såsom å, ä, öKod:
# -*- coding: utf-8 -*- print "Detta program räknar den totala kosnaden för resan" print "Svara på några frågor"
@annlu, underbart och mycket pedagogisk. Jag har inte börjat med for/loop än men det kommer. Mycket tacksam för dina tips
- emehraj
- Medlem
Offline
- Registrerad: 2016-12-19
- Inlägg: 17
Re: Räkna total kostnad(resa)
Det blev så här och funkar
# -*- coding: utf-8 -*-
hotel = {"A" : 150, "B" : 200, "C" : 250}
car = {"D" : 80, "E" : 120, "F" : 150}
print
print "Ett program som räknar total kostnad för resa"
print
for h in hotel:
print("Hotel {} kostar {}/natt" .format(h, hotel[h]))
print
user_hotel= raw_input("Vilken hotel? ")
print
days = raw_input("Hur många dagar? ")
print "Hotellet du valt kostar:", hotel[user_hotel]
print
print "Totalt pris:", int(days)*hotel[user_hotel]
print
print "Val av bil:"
for c in car:
print ("Bil {} kostar {} /dag" .format(c, car[c]))
print
val_bil = raw_input("Val av bil: ")
print
days = raw_input("Hur många dagar? ")
print "Bilen du vald kostar ", car[val_bil]
print
print "Total pris: ", int(days) * car[val_bil]
print
print "Det totala kostnad för hotel och hyrbil är :" ,int(days) * hotel[user_hotel] + int(days) * car[val_bil]
.... dock jag har fortfarande problem med svenska bokstäver. Jag brukar skriva själva programmet i Notepad++, spara det .py och sedan köra det från Windows PowerShell, gör jag rätt?
- annlu
- Medlem
Offline
- Registrerad: 2016-11-02
- Inlägg: 58
Re: Räkna total kostnad(resa)
emehraj skrev:
Det blev så här och funkar
# -*- coding: utf-8 -*-
hotel = {"A" : 150, "B" : 200, "C" : 250}
car = {"D" : 80, "E" : 120, "F" : 150}
print "Ett program som räknar total kostnad för resa"
for h in hotel:
print("Hotel {} kostar {}/natt" .format(h, hotel[h]))
user_hotel= raw_input("Vilken hotel? ")
days = raw_input("Hur många dagar? ")
print "Hotellet du valt kostar:", hotel[user_hotel]
print "Totalt pris:", int(days)*hotel[user_hotel]
print "Val av bil:"
for c in car:
print ("Bil {} kostar {} /dag" .format(c, car[c]))
val_bil = raw_input("Val av bil: ")
days = raw_input("Hur många dagar? ")
print "Bilen du vald kostar ", car[val_bil]
print "Total pris: ", int(days) * car[val_bil]
print "Det totala kostnad för hotel och hyrbil är :" ,int(days) * hotel[user_hotel] + int(days) * car[val_bil]
Bra jobb! Det har dock smugit sig in en bug i din kod, kan du hitta den? När du beräknar total kostnad för hotell och hyrbil använder du samma variabel days. Om användaren vill vara 4 dagar på hotell men bara ha hyrbil i 2 dagar så blir det fel. Testa!
Eftersom du verkar vara öppen för tips vill jag tipsa om det vanligaste sättet man skriver ut nyrad (newline/line break). För att slippa skriva "tomma" print genom hela sin kod brukar man använda \n.
print
print "Ett program som räknar total kostnad för resa"
print
blir då:
print "\nEtt program som räknar total kostnad för resa\n"
emehraj skrev:
.... dock jag har fortfarande problem med svenska bokstäver.
Buff, det här med encoding brukar alltid skapa problem. Fortsätter du programmera kommer du garanterat uppleva det igen Jag hoppas jag kan hjälpa dig, men ibland kan det vara knepigt. Vad gäller Windows och UTF-8 så är de långt ifrån bästa vänner, men förhoppningsvis kan du slippa se tråkiga tecken som ├Âr och ├ñ i utskriften. I varje Windows PowerShell fönster där du vill kunna visa tecken i UTF-8 encoding kan du inleda med att skriva kommandot chcp 65001:
Kod:
>chcp 65001 Active code page: 65001 > python din_python_fil.py Ett program som räknar total kostnad för resa
Om det ändå inte funkar, se till att din kommandotolk använder fonten Lucida Console (högerklicka uppe på fönsterramen, gå till properties/inställningar och välj fliken font. Kontrollera att den är intälld på Lucida Console).
emehraj skrev:
Jag brukar skriva själva programmet i Notepad++, spara det .py och sedan köra det från Windows PowerShell, gör jag rätt?
Att skriva i Notepad++ tycker jag låter alldeles utmärkt, fortsätt med det ifall du gillar det! Vill du testa något annat kan IDLE som kom med när du installerade Python vara en bra start. IDLEs texteditor är tråkigare än Notepad++ (tycker jag...) men det ingår integrerad support för att direkt köra dina program (run) ifall du tröttnar på PowerShell eller Windows vanliga Command Propt. Om du programmerar mer i framtiden och gör större projekt eller ifall du blir nyfiken, kan du testa ett IDE som PyCharm eller Spyder (kompletta med texeditor, kompilator, debugger mm). De tar mer resurser på datorn men kan också underlätta arbetet.
- statement
- Moderator
Offline
- Registrerad: 2012-09-07
- Inlägg: 4314
Re: Räkna total kostnad(resa)
Var vänlig och ändra rubriken så att den blir lite tydligare och beskriver trådens innehåll. /moderator
- emehraj
- Medlem
Offline
- Registrerad: 2016-12-19
- Inlägg: 17
Re: Räkna total kostnad(resa)
annlu skrev:
emehraj skrev:
Det blev så här och funkar
# -*- coding: utf-8 -*-
hotel = {"A" : 150, "B" : 200, "C" : 250}
car = {"D" : 80, "E" : 120, "F" : 150}
print "Ett program som räknar total kostnad för resa"
for h in hotel:
print("Hotel {} kostar {}/natt" .format(h, hotel[h]))
user_hotel= raw_input("Vilken hotel? ")
days = raw_input("Hur många dagar? ")
print "Hotellet du valt kostar:", hotel[user_hotel]
print "Totalt pris:", int(days)*hotel[user_hotel]
print "Val av bil:"
for c in car:
print ("Bil {} kostar {} /dag" .format(c, car[c]))
val_bil = raw_input("Val av bil: ")
days = raw_input("Hur många dagar? ")
print "Bilen du vald kostar ", car[val_bil]
print "Total pris: ", int(days) * car[val_bil]
print "Det totala kostnad för hotel och hyrbil är :" ,int(days) * hotel[user_hotel] + int(days) * car[val_bil]Bra jobb! Det har dock smugit sig in en bug i din kod, kan du hitta den? När du beräknar total kostnad för hotell och hyrbil använder du samma variabel days. Om användaren vill vara 4 dagar på hotell men bara ha hyrbil i 2 dagar så blir det fel. Testa!
Eftersom du verkar vara öppen för tips vill jag tipsa om det vanligaste sättet man skriver ut nyrad (newline/line break). För att slippa skriva "tomma" print genom hela sin kod brukar man använda \n.
print "Ett program som räknar total kostnad för resa"
blir då:
print "\nEtt program som räknar total kostnad för resa\n"emehraj skrev:
.... dock jag har fortfarande problem med svenska bokstäver.
Buff, det här med encoding brukar alltid skapa problem. Fortsätter du programmera kommer du garanterat uppleva det igen
Jag hoppas jag kan hjälpa dig, men ibland kan det vara knepigt. Vad gäller Windows och UTF-8 så är de långt ifrån bästa vänner, men förhoppningsvis kan du slippa se tråkiga tecken som ├Âr och ├ñ i utskriften. I varje Windows PowerShell fönster där du vill kunna visa tecken i UTF-8 encoding kan du inleda med att skriva kommandot chcp 65001:
Kod:
>chcp 65001 Active code page: 65001 > python din_python_fil.py Ett program som räknar total kostnad för resaOm det ändå inte funkar, se till att din kommandotolk använder fonten Lucida Console (högerklicka uppe på fönsterramen, gå till properties/inställningar och välj fliken font. Kontrollera att den är intälld på Lucida Console).
emehraj skrev:
Jag brukar skriva själva programmet i Notepad++, spara det .py och sedan köra det från Windows PowerShell, gör jag rätt?
Att skriva i Notepad++ tycker jag låter alldeles utmärkt, fortsätt med det ifall du gillar det!
Vill du testa något annat kan IDLE som kom med när du installerade Python vara en bra start. IDLEs texteditor är tråkigare än Notepad++ (tycker jag...) men det ingår integrerad support för att direkt köra dina program (run) ifall du tröttnar på PowerShell eller Windows vanliga Command Propt. Om du programmerar mer i framtiden och gör större projekt eller ifall du blir nyfiken, kan du testa ett IDE som PyCharm eller Spyder (kompletta med texeditor, kompilator, debugger mm). De tar mer resurser på datorn men kan också underlätta arbetet.
Det stämmer bra med "days", jag döpte om det andra days_1 istället och det med att skriva chcp 65001 först funkar också.
Tack för din tid och dina tips