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 »

Ibland kan satser bli långa och därmed svåra att läsa och förstå. Det går att dela upp en sats över flera rader genom att bryta raden genom att använda ett "\" i satsen.

Uppgift. I Postnords anvisningar finns följande föreskrifter för hur stora och små vanliga brev får vara:
Maximalmått: Längd 600 mm, Tjocklek 100 mm, Bredd + Längd + Tjocklek högst 900 mm
Minimalmått: Längd 140 mm, Bredd 90 mm
Skriv ett program som läser in ett brevs längd, bredd, och tjocklek, och som undersöker om brevet har tillåtna mått eller inte. Använda tecknet "\" i if-satsen för att dela upp de logiska uttrycket så att det blir mer lättläst.

Code: Select all

längd = int(input('Ange brevets längd i mm: '))
bredd = int(input('Ange brevets bredd i mm: '))
tjocklek = int(input('Ange brevets tjocklek i mm: '))

if längd >= 140 and längd <= 600 and tjocklek <= 100 \
    and bredd >= 90 and (längd + tjocklek + bredd) <= 900:
    print('Tillåtet')
else:
    print('Otillåtet')
1. Användaren får ange en längd, bredd, och tjocklek i måttet mm.
2. Om längden är större än eller lika med 140, och längden är mindre än eller lika med 600, och tjockleken är mindre än eller lika med 100 (bryter raden för att programmet ska vara mer lättläst), och bredden är större än eller lika med 90, och slutligen om längden + tjockleken + bredden är mindre än eller lika med 900; skriv ut Tillåtet.
3. De fall där villkåren ej uppfylls, skriv ut Otillåtet.
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Övning. En operatör för mobiltelefoni erbjuder tre olika abonnemang. De olika abonnemangen är olika förmånliga beroende på hur mycket man ringer för. "Kontant" är mest förmånligt om man ringer högst 33 minuter per månad. "Normal" lönar sig best när man ringer för mellan 33 och 66 minuter. "Plus är mest förmånligt om man ringer ännu mer.

Skriv ett program som läser in antalet minuter man uppskattar sig att ringa per månad. PRogrammet ska tala om vilket abonnemang man bör välja.

Code: Select all

minuter = int(input('Hur många minuter uppskattar du att du kommer att ringa? '))

if minuter <= 33:
    print('Välj abonnemang Kontant')
elif minuter > 33 and minuter <= 66:
    print('Välj abonnemang Normal')
else:
    print('Välj abonnemang Plus')
1. Ange antal minuter
2. Om antal minuter är lika med 33 eller mindre, skriv ut, Välj Kontant
3. Eller om antalet minuter är mellan 33 och 66, skriv ut, Välj Normal
4. Annars, skriv ut, välj Plus
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Uppgift. Skriv ett program som räknar ut en cirkels omkrets och area - endast om angiven radie är större än noll.

Code: Select all

import math
radie = float(input('Ange radie: '))
if radie > 0:
    omkrets = 2 * math.pi * radie
    area = math.pi * radie ** math.pi
    print(f'{omkrets}, {area}')
else:
    print('Radien måste vara större än noll')
1. Importera modulen math som innehåller funktioner och matematiska konstanter
2. Användaren får mata in en radie
3. Testa om radien är > 0, om så är fallet, beräkna omkrets och area, och skriv ut dessa i consolen
4. Alla andra utfall om radien inte är >0 betyder att de är noll eller mindre, skriv då ut att Radien måste vara större än noll
'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 »

Jag har så svårt att hålla koll på var alla < ' " : ) { ska vara nånstans...
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 »

== (lika med), != (inte lika med), < (mindre än), <= (mindre än eller lika med), > (större än), >= (större än eller lika med) är så kallade jämförelseoperatorer. Du kan jämföra varabler eller uttryck på detta sättet. Värdet som bildas är ett booleskt värde, vilket innebär True eller False, sant eller falskt. Exempel: 5 < 10 är sant, alltså returneras värdet True. Däremot 5 < 3 är inte sant, alltså returneras värdet Falskt.

Enkelfnuttar ' och dubbelfnuttar ", så som jag förstått det, används för att markera strängar. Exempel a = "3", då tilldelas variabeln a strängen 3. 3an är alltså inte av typen integer, utan av typen string. 3an i detta fallet behandlas som en text istället för en siffra och kan inte användas som en siffra i beräkningar. Liknande gäller när du vill skriva ut en text med en print. Om du vill skriva ut en sträng, en text, så skriver du (med antingen enkelfnuttar eller dubbelfnuttar) print('Hello world').

":" används för att markera att ett uttryck har gjorts. Till exempel, i en if-sats, så markeras slutet av uttrycket med ":", if a < 10:. På nästa rad indenteras koden för att markera att koden tillhör ett block av kod inne i if-satsen. Känner att jag inte riktigt greppat användsningsområdet för ":" ännu, men gjorde ändå ett försök till förklaring. Det används också när till exempel while- och forloopar används.

Tror att paranteser "( )" används för att markera ett invärde till en funktion.

Så som jag använt måsvingar "{ }" är i f-strängar för att hämta värdet av en variabel till funktionen print. Det används även för att markera så kallad dictionaries, tror det översätts till "bibliotek". Har inte gått igenom bibliotek ännu.

Inwatto eller SpaceCorp kanske kan detta bättre! Är som sagt fortfarande nybörjar och återvänder gärna när jag vet mer.
'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 »

Python är lite speciellt och alldeles för nytt för att jag ska kunna något om det. Du verkar klara det bra, Nobel!
User avatar
SpaceCorp
Lutetiummedlem
Posts: 1577
Joined: 22 May 2021, 20:57

Re: Python

Post by SpaceCorp »

Du verkar orka med att läsa ganska mycket. Det är nog ett bra tecken. Att man har ork.
Jag vet inte mycket om python, tyvärr.
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Att upprepa; While-satsen. Exempel:

Code: Select all

print('[', end='')
k = 0
while k < 6:
    print(f'{k:2} ', end='')
    k += 2
print(']')
1. Skriv ut en hakparantes, och avsluta utskriften utan att hoppa till nästa rad.
2. Ge variabeln k värdet 0.
3. While-loopens upprepas medan villkoret k < 6 är sant, indenterad kod körs varje gång villkoret k < 6 är sant.
4. Första gången whileloopen körs testar om k < 6, detta stämmer eftersom k = 0, sedan adderas 2 till 0, så k = 2. While-loopen initierar igen och testar om k < 6, nu är k = 2, så k < 6 stämmer, igen adderas 2 till k som nu blir k = 4. Igen testas om k < 6, vilket stämmer, så loopen körs igen. Nu adderas 2 till k, alltså blir k = 6, nu bryts loopen.
5. Programmet skriver ut en avslutande hakparantes.
6. Den totala utskriften a programmet blir [ 0 2 4 ].
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Sedan jag började tråden har jag läst 60 sidor i läroboken. Tycker boken är dåligt skriven och det är för mycket fokus på matematik vilket gör att själva programmeringsprinciperna förlorar fokus... Men men, det är bara till att bita i det sura äpplet och ta sig igenom matematiken på något sätt. Har ju slutat på jobbet nu och känner att jag har extra energi till att studera, så gör det så mycket jag orkar.
'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.

Code: Select all

# Beräkning av summan 1+2+3+ .. +n
n = int(input('n? '))
summa = 0
k = 1
while k <= n:
    summa += k
    k += 1
print('Summan blir', summa)
1. Användaren anger ett heltal
2. Variabeln summa ges värdet 1
3. Variabeln k ges värdet 1
4. While-loopen kollar om variabeln k <= n, vilket betyder att om användaren anger ett heltal som är mindre än 1 så körs inte loopen och programmet skriver automatiskt ut att summan blir 0.
5. I while-loopen adderas k till summa, som i detta fallet är +1. Sedan ökas variabeln k med 1.
6. Skriver ut vad summan blir.

Kommentar: Om användaren matar in n som 3 så börjar loopen köras då 1 <= 3, värdet på summa ökar med k, alltså 1, och k ökar med 1. Nästa runda 2 <= 3, vilket är sant, så loopen körs igen och summa ökar med k som nu är 2, och k ökar med 1 igen och blir 3. 3 <= 3, vilket stämmer, så summa som nu är 3 ökar med värdet k som är 3, och k ökar med 1. Nu är k = 4 så while-loopen bryts och summan skrivs ut.
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Uppgift. Skriv ett program som läser in ett heltal n och beräknar summan, dvs. 1 + 4 + 9 + 16 + ... n^2. Tips: k^2 är samma som k * k.

Code: Select all

n = int(input('n? '))
summa = 0
k = 1
while k <= n:
    summa = summa + k * k
    k += 1
print('Produkten är', summa)
1. Användaren matar in ett heltal (vi säger att användare matar in siffran 3)
2. Variabeln summa skapas och tilldelas värdet 0
3. Variabeln k skapas och tilldelas värdet 1
4. While-satsen testar om k <= n. Om k <= n körs koden i while-loopen (indenterad kod). summa = 0 + 1 * 1 = 1, 1 läggs till k.
5. While-satsen testar igen om k <= n, nu är k = 2 <= 3, summa = 1 + 2 * 2 = 5, k ökar med 1.
6. While-satsen testar k <= n, nu är det 3 <= 3, vilket stämmer så koden i while-loopen körs igen. summa = 5 + 3 * 3 = 14, k ökas med 1. Nu är k = 4
7. While-loopen bryts efter som att 4 <= 4 är falskt
8. Summan skrivs ut
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Uppgift. Skriv ett program som läser in ett heltal n och som beräknar den så kallade harmoniska serien (1/1) + (1/2) + (1/3) + ... + (1/n)

Code: Select all

n = float(input('n? '))
summa = 0
k = 1
while k <= n:
    summa += 1/k
    k += 1
print('Summa:', summa)
1. Användaren får ange ett heltal (exempel värdet 3), men eftersom att jag vill att talet ska behandlas som ett decimaltal tilldelar jag variabeln n typen float.
2. Variabeln summa tilldelas 0
3. Variabeln k tilldelas 1.
4. While-satsen testar om k <= n, alltså 1 <= 3, vilket stämmer så while-loopens innehåll körs. summa = summa + 1/k, i första fallet 0 + 1/1. k ökas med 1.
5. While-satsen testar om k <= n, alltså 2 <= 3, vilket stämmer så while-loopen körs. summa = summa + 1/k, alltså 1 + 1/2. k ökar med 1.
6. While-satsen undersöker om k <= n, alltså 3 <= 3, vilket stämmer så while-loopen körs. summa = summa + 1/k, alltså 1.5 + 1/3. k ökar med 1.
7. While-satsen testar om k <= n, alltså 4 <=3 vilket inte stämmer så loopen bryts.
8. Summan skrivs ut.
'cause the freak inside controls my mind
Post Reply