Citat:
Ookej...
En väldigt viktig fråga:
Använder du boken som kurslitteratur på gymnasie eller högskolenivå?
Om du gör detta bör du nog ta en liten diskussion med din lärare om huruvida ni ska använda boken då den inte är Pythonkompatibel, utan den använder generella programmeringsmetoder för andra språk i Python.
Använder du boken för ditt egen intresse? då ska du nog ta dig en funderare på dessa kodsnuttar:
Vilken av dessa två kodsnuttar är med läsbar, effektivast och körbar?
Orginalkoden från din post:
Kod:
namn = [] # skapar tom lista
pris = [] # skapar tom lista
while True:
s = s.strip() # tar bort ev blanka tecken först och sist
i = s.rfind(' ') # söker index före priset
namn.append(s[0:i]) # bildar slice med namnet
pris.append(float(s[i+1:])) # bildar slice med priset
m = min(pris) #söker lägsta pris
k = pris.index(m) # index för lägsta pris
print(namn[k] + ' är billigast')
print(f'Kostnad: {m:1.2f} kr/månad')
Eller min ändrade kodsnutt. Den är nästan samma som originalet, men med mer Pythonisk kod:
Kod:
namn = [] # skapar tom lista
pris = [] # skapar tom lista
while True:
s= input()
s = s.split()
name, price = s
namn.append(name)
pris.append(price)
m = min(pris) #söker lägsta pris
k = pris.index(m) # index för lägsta pris
print(namn[k] + ' är billigast')
print(f'Kostnad: {m:1.2f} kr/månad')
Info om författaren:
Citat:
Jan Skansholm är tekn. dr. och har under många år varit verksam som universitetslektor vid Chalmers tekniska högskola och vid Göteborgs Universitet.Han har mångårig erfarenhet av programmeringsundervisning, både från den akademiska världen och från företagskurser, där han verkat som föreläsare och instruktör.
Jan Skansholm debuterade som läroboksförfattare 1986. Denna webbplats innehåller diverse kompletterande information, t.ex. lösningar till övningsuppgifter, för de böcker han skrivit eller varit medförfattare till.
Jan Skansholm debuterade som läroboksförfattare 1986. Denna webbplats innehåller diverse kompletterande information, t.ex. lösningar till övningsuppgifter, för de böcker han skrivit eller varit medförfattare till.
Som han skriver koden är han en programmerare för C, C++, C# mfl. Han kommer från den gamla tiden där man måste indexera. Visst, jag kan tycka att detta är bra att kunna och att lära sig för att generellt kunna programmera, men det är INGET som en nybörjare i PYTHON skall hålla på med när man inte har koll på sitt språk.
Att använda listindexering och slicers kan vara ett bra sätt i mer avancerad kod, men som jag skrev förut finns det ju verktyg i Python som är bättre att använda. Som du ser på mina inlägg löser jag uppgiften utan listindexering, med bättre och mer läsbar kod.
I mitt första inlägg använder jag inte ens listor, utan en dict(). Varför skapa två listor när man kan ha en samling?
Varför hålla på så här:
Kod:
namn.append(s[0:i]) # bildar slice med namnet
pris.append(float(s[i+1:])) # bildar slice med priset
m = min(pris) #söker lägsta pris
k = pris.index(m) # index för lägsta pris
När man kan göra det med en dict:
Kod:
produkter = dict()
name, price = input().split()
produkter[name]= price
min_produkt = min(produkter, key = produkter.get)
print(f'namn: {min_produkt} pris: {produkter.get(min_produkt)} kr/månad')
En enklare, mer läsbar kod, även om den inte ens är färdig, då den saknar en loop.
