Python

Om att köpa dator, lösa datorproblem och tipsa om dataspel.

Moderator: Moderator 1

User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Tilldelningsoperatorer.

När man programmerar vill man ibland ändra en variabels värde.


Exempel:

Code: Select all

n = n + 1
i = i +2
j = j - k
k = k * i
Det kan vara praktiskt att använda de utökade formerna av tilldelningsoperatorer. De gör samma uträkning som i exemplet ovan (tycker personligen att de utökade tilldelningsoperatorerna gör koden snyggare och mer lättläslig):

Code: Select all

n += 1
i += 2
j -= k
k *= i
'cause the freak inside controls my mind
User avatar
Richard
Administratör
Posts: 8204
Joined: 10 May 2021, 13:45
Location: Ängelholm
Contact:

Re: Python

Post by Richard »

Nobel wrote: 03 Jan 2022, 10:44
Richard wrote: 03 Jan 2022, 10:02
Nobel wrote: 03 Jan 2022, 08:33Vad tyckte du om Python? Testade i unga år bland annat Java och C++, Python har helt klart varit det mest användarvänliga.
Jag tycker Python är väldigt enkelt, men har som sagt inte kommit så långt. I skolan lärde vi oss BASIC o Delphi, men Python verkar enklare när jag tagit upp det o är ett av det vanligaste. I Linux så kan man köra scripten direkt också, behöver ej kompileras.
Vet du om Python är kompatibelt med en Raspberry Pi? Skulle vara roligt att skaffa en sådan om det är fallet och hitta olika sätt att automatisera vardagen.
Jo, var nästan säker på det, men googlade ändå:
https://realpython.com/python-raspberry-pi/

Det blev jag sugen på, men kan inte tillräckligt. Men det skulle vara riktigt kul att göra nått med t.ex GPIO-stiften nån gång. Det mest avancerade jag gjort är att ha byggt en radar av en gammal mini-parabol så att det gick att mäta hastigheten på bilarna. Fast jag stod mest för elektroniken o min klasskamrat för programmeringen. Men det var 22 år sen o inte med en Raspberry, det var något BASIC-chip.
Blogg, dagbok och hemsida: https://www.richardhandl.com/
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Det ska gå att programmera Arduinos med Python också. Har en sådan, och funderar på att testa att programmera den med Python om jag klarar av att lära mig hur det ska göras.

Det låter som ett fräckt projekt! Vad var det för typ av parabol som ni använde?
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

"Skriv ett program som beräknar kostnaden för att ringa med en mobiltelefon med ett enkelt abonnemang. Programmet ska läsa in hur många minuter man ringer per månad och hur mycket det kostar per minut. Man får 10% rabatt om man ringer för minst 300 kr."

Min lösning (Vet inte om den är optimal, i boken har de endast gått igenom if-satser (alltså inte elif och else ännu)):

Code: Select all

min = int(input('Hur många minuter ringer du i månaden? '))
kostnad = float(input('Hur mycket kostar varje minut? '))

if min < 300:
    print('Du betalar', min * kostnad)

if min >= 300:
    print('Du betalar', min * (kostnad * 0.9))
1. Användaren matar in det antal minuter användaren ringt
2. Användaren matar hur mycket varje minut kostar
3. Om antalet minuter är mindre än 300, då kostar samtalet antal minuter gånger kostnaden för varje minut. Programmet skriver vad kostnaden blir.
4. Om antalet minuter är 300 eller mer, får användaren 90% rabatt på kostnaden. Programmet skriver ut vad kostnaden blir.
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Exempel. Räkna ut priset för en charterresa. Resebyrån har ett erbjudande där alla vuxna får 10% av grundpriset i rabatt, alla barn under 12 år 50%, och pensionärer 25%.

Code: Select all

pris = float(input('Grundpris: '))
ålder = int(input('Ålder: '))
if ålder < 12:
    pris *= 0.5
elif ålder > 65:
    pris *= 0.75
else:
    pris *= 0.9
print(f'Pris: {pris:.2f} kr')
1. Användaren skriver in priset på resan, som lagras som ett decimaltal i variabeln "pris".
2. Användaren skriver in en ålder, som lågras som ett heltal i variabeln "ålder".
3. Om åldern är mindre än 12, multiplicera priset med 0.5 (50% rabatt)
4. Eller om åldern är mer än 65, multiplicera priset med 0.75 (20% rabatt)
5. Annars är åldern mellan 12 och 65, alltså vuxen, priset multipliceras med 0.9 (10% rabatt)
6. Skriv ut priset med en f-string, med två decimaler,
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

På ett gym kan man antingen köpa årskort eller köpa en biljett vid varje besök. Skriv ett program som läser in priset för ett årskort, priset för en biljett, samt antalet gånger man planerar att besöka gymmet under ett år. Därefter ska programmet ange om det lönar sig att köpa årskort eller inte.

Code: Select all

årskort = int(input('Vad kostar ett årskort? '))
dagskort = int(input('Vad kostar ett dagskort? '))
tillfällen = int(input('Hur många gånger ska du träna?'))
totaltdagskort = dagskort * tillfällen

if årskort < totaltdagskort:
    print('Det lönar sig att köpa dagsort')
else:
    print('Det lönar sig inte')
1. Användaren anger vad ett årskort kostar, priset sparas som ett heltal i variabeln årskort
2. Användaren anger vad ett dagskort kostar, priset sparas som ett heltal i variabeln årskort
3. Användaren anger hur många gånger hen tänker träna under året
4. Programmet räknar ut hur vilket priset om hen tränar x antal gånger per år
5. Programmet testar om värdet för årskort är mindre än om användaren skulle tränat på endagskort. Om det är mindre skriver programmet ut att det lönar sig
6. Om priset för årskort inte är lägre än om användaren använder endagskort är alla andra fall än årskort < totaltdagskort sanna, alltså alla andra utfall. Därav används "else". Programmet skriver då ut att det inte lönar sig.
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

På ett matteprov kunde man få högst 50 poäng. Gränsen för betyget E var 25 poäng och för betygen D, C, B, och A, 30, 35, 40, respektive 45 poäng. Skriv ett program som läser in poängen för en elev och som visar vilket betyg hen fick på sitt prov.

Code: Select all

poäng = float(input('Hur många poäng fick eleven? '))

if poäng >= 45:
    betyg = 'A'
elif poäng >= 40:
    betyg = 'B'
elif poäng >= 35:
    betyg = 'C'
elif poäng >= 30:
    betyg = 'D'
elif poäng >= 25:
    betyg = 'E'
else:
    betyg = 'F'
print(f'Betyg: {betyg}')
1. Användaren matar in hur många poänd eleven fick. Antalet poäng lagras som ett heltal i variabeln poäng.
2. Om antalet poäng är mer än eller lika med 45, spara strängen 'A' i variabeln betyg.
3. Eller om antalet poäng är mer än eller lika med 40, spara strängen 'B' i variabeln betyg.
4. Eller om antalet poäng är mer än eller lika med 35, spara strängen 'C' i variabeln betyg.
5. Eller om antalet poäng är mer än eller lika med 30, spara strängen 'D' i variabeln betyg.
6. Eller om antalet poäng är mer än eller lika med 25, spara strängen 'E' i variabeln betyg.
7. Annars fick eleven mindre än 25 och tilldelas därför betyget F. Strängen 'F' sparas i variabeln betyg.
8. Skriv ut betyget som en f-sträng. Hämta variabeln betyg.
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Nästlade if-satser, en if-sats i en if-sats.

Code: Select all

t = float(input('Temp? '))
if t < 18:
    print('Det är kallt')
    print('Sätt på värmen')
    if t < 12:
        print('Sätt på jackan')
        if t <= -25:
            print('Det är svinekallt')
else:
    print('Det är varmt')
    if t >= 22:
        print('Stäng av värmen')
        if t >= 100:
            print('Det är ökenhett')
print(f'Det är {t:.1f} grader')
1. Användaren anger en temperatur som lagras i variabeln t som ett decimaltal.
2. Om temperaturen är lägre än 18, skriv ut att det är kallt och att värmen ska sättas på. Om temperaturen skulle visa sig vara lägre än 12, uppmana användaren att ta på sig en jacka. Om temperaturen skulle visa sig vara lägre än -25, skriv att det är svinekallt.
3. Annars är temperaturen högre än 18, skriv då att det är varmt. Om temperaturen skulle vara högre än eller lika med 22, skriv ut att stänga av värmen. Och om temperaturen är högre än 100 grader, skriv det är ökenhett.
4. Avslutningsvis, skriv ut hur många grader det är som en f-sträng där temperaturen skrivs ut som ett decimaltal med en decimal.
'cause the freak inside controls my mind
User avatar
Inwatto
Lutetiummedlem
Posts: 1771
Joined: 08 Jul 2021, 18:14
Location: Skåne

Re: Python

Post by Inwatto »

Nobel,

har du provat ditt nästlade if-sats-exempel och sett att det fungerar. Jag skulle tro, men jag är bara gammal BASIC- och C- programmerare, att du behöver klamrar eller något för att else-satsen ska veta vilken if det är. För just nu är programmet indenterat men om man bortser från hur det ser ut och tänker hur kompilatorn jobbar, så funkar inte ditt exempel så som du beskriver det ska göra.
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Är nybörjare så har inte koll på alla termer ännu, men har för mig att Pythonfiler inte kompileras, utan en interpretator används istället som tolkar instruktionerna. I Python är indentering viktigt, för att det säger till vilken kod som tillhör vilket block. Allt som är indenterat efter if-satsen tillhör den. Roligt med funderingar! Tvingas tänka efter ordentligt och lära mig.

Det finns förklarat på: https://www.w3schools.com/python/gloss_ ... tation.asp
Where in other programming languages the indentation in code is for readability only, the indentation in Python is very important.

Python uses indentation to indicate a block of code.
Om koden inte är regelrättigt indenterad så genereras felmeddelande i Python. Har kört programmet i Visual Studio Code, och det verkar fungera.
'cause the freak inside controls my mind
User avatar
Inwatto
Lutetiummedlem
Posts: 1771
Joined: 08 Jul 2021, 18:14
Location: Skåne

Re: Python

Post by Inwatto »

Bra att Python gjort något åt indenteringen, så den inte bara är kosmetisk som i andra (gamla) programspråk!
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Är det skottår? Följande regel gäller för skottår i Sverige: Skottår är sådana år som är jämnt delbara med 4, med undantag av sådana år som är jämnt delbara med hundra. Dock är sådana år som är jämnt delbara med 400 skottår.

Code: Select all

år = int(input('Skriv ett årtal: '))
if (år % 4 == 0 and år % 100 != 0) or år % 400 == 0:
    print('Skottår')
else:
    print('Inte skottår')
1. Användaren får ange ett årtal till programmet.
2. Om årtalet är jämnt delbart med 4 är det skottår, gällande att det inte är jämnt delbart med 100. Det är även skottår om årtalet är jämnt delbart med 400. Om kraven uppfylls, skriv ut Skottår.
3. Annars är det inte skottår. Skriv ut Inte skottår

Kommentar: Alltså måste år % 4 == 0 OCH år % 100 != 0 uppfyllas för att det ska vara skottår. ELLER år % 400 == 0.
'cause the freak inside controls my mind
Post Reply