Python

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

Moderator: Moderator 1

Post Reply
User avatar
Richard
Administratör
Posts: 8173
Joined: 10 May 2021, 13:45
Location: Ängelholm
Contact:

Re: Python

Post by Richard »

Har gått igenom hela sidan https://www.programmerapython.se/ nu, men jag får fortsätta öva.
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 »

Bra jobbat! Jag har fortsatt med att lösa mina övningsuppgifter. Kikade på facit till uppgift 4.1, tänkte i de rätta banorna åtminstone även om jag inte lyckades att lösa uppgiften. Jag letade efter en mer generell lösning än facit som endast fungerar på tal mellan 0 och 1e300, om man till exempel anger 1.e400 får värdet högsta infinite istället.

Code: Select all

minsta = 1.e300 
största = 0
while True:
    tal = int(input('Ange ett tal '))
    if tal < 0:
        break
    if tal > största:
        största = tal
    if tal < minsta:
        minsta = tal
print(f'Minsta: {minsta}, Högsta: {största}')
1. Börja med att tilldela minsta ett stort tal
2. Tilldela största 0
3. Evighetsloop while True
4. Fråga användaren om att ange ett tal
5. Om tal < 0, bryt loopen
6. Om tal större än största, tilldela största talets värde
7. Om tal mindre än minsta, tilldela minsta talets värde
8. Om loopen bryts, skriv ut minsta och högsta värde
'cause the freak inside controls my mind
Klankedinken
Guldmedlem
Posts: 10305
Joined: 19 Jul 2021, 18:04

Re: Python

Post by Klankedinken »

Det luktar Python!
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

En kommun har gjort följande prognos för befolkningsutveckling de närmsta åren.
* Vid början av 2019 hade kommunen 26 000 invånare
* Antalet födda och avlidna under ett år uppskattas vara 0,7% respektive 0.6% av befolkningen vid årets början
* Antalet inflyttade och antalet utflyttade uppskattas till 300 respektive 325 varje år
Skriv ett program som beräknar kommunens uppskattade invånarantal i början av ett visst år. Vilket år det gäller ska läsas som indata till programmmet.

Code: Select all

import math
år = int(input('Vilket år? '))
antal = 26_000
for i in range(2020, år+1):
    antal = antal + math.ceil(300 - 325 + antal*(0.7-0.6)/100)
print(f'Beräknad befolkning: {antal}')
1. Importera modulen math som innehåller matematiska funktioner och konstanter
2. Låt användaren ange till vilket år uppskattning av invånarantal ska göras
3. antal = 26_000 när programmet startar
4. För i i intervall 2020 till år+1:
5. Beräkna antal. math.ceil är en funktion i modulen math, math.ceil(x) ger det minsta heltal som är >= x
6. Loopen körs godtyckligt aantal gånger
7. Programmet skriver ut vad befolkningen beräknas vara år x.
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Detta ska vara en avancerad övning. Åkte fast på matten igen.

Skriv ett program som beräknar summan 1/1 - 1/2 + 1/3 - 1/4 + ... upprepningen ska sluta när den sista termen man lagt till har ett absolutbelopp som är mindre än 0.00001. Lösningen är från facit.

Code: Select all

term = 1.0
sum = 1.0
tecken = 1
k = 1
while abs(term) >= 1.0e-5:
    k += 1
    tecken = - tecken
    term = tecken * 1/k
    sum += term
print(f'Summan blir {sum}')
1. Tilldela variabeln term 1.0, tilldela variabeln sum 1.0, tecken 1, och k 1.
2. Medan absolutvärdet för term >= 1.0e-5:
3. Öka k med 1
4. Har aldrig stött på tecken = - tecken förut, vad innebär det? Att "tecken" får ett negativt värde? De har inte gått igenom det i boken heller...

Nej, usch fy för denna kurslitten. Får återvända och fråga när jag får en lärare.
'cause the freak inside controls my mind
User avatar
Inwatto
Lutetiummedlem
Posts: 1754
Joined: 08 Jul 2021, 18:14
Location: Skåne

Re: Python

Post by Inwatto »

tecken = - tecken är ett kort sätt att växla mellan plus och minus. Om tecken är 1, som det är från början, blir det -1 sedan. När det är -1 blir det 1 för --1 är 1.
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Tack Inwatto! Uppskattar din input. :)
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Kapitel 5. Att hantera text. Operationer på sekvenser. Indexering.

Elementen i en sekvens s numreras från 0 och uppåt.
Antalet element i en sekvens kan beräknas med funktion len: len(s)
Man kan komma åt enstaka element i en sekvens genom att indexera s[i} (använder måsvinge istället för ], för att annars tolkas i:et som en BBCode)
Indexet i ska vara ett heltal i intervallet 0 till len(s)-1
Mean kan alternativt ge negativa index. Då räknar man bakifrån.
s[-1] är det sista värdet, s[-2] det näst sista osv.
'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 en text. Programmet ska undersöka om textens första och sista bokstav är samma.

Code: Select all

text = input('Är textens första och sista bokstav samma? ')
if text[0] == text[len(text)-1]:
    print('Ja, de är samma')
else:
    print('Nej, de är olika')
1. Användaren får mata in en text.
2. Om första bokstaven är lika med ordets längd minus 1 (alltså sista bokstaven):
3. Skriv ut Ja de är samma
4. Annars skriv ut Nej de är olika.
Kommentar: Programmet skiljer på stora och små bokstäven. Alltså kommer ordet "Anna" tolkas som att första och sista bokstaven är olika. "anna" kommer däremot programmet att tolka som att första och sista bokstaven r samma
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Skivor.

Man kan bilda en skiva från en sekvens s. En skiva blir en ny sekvens.
s[först:sist:steg]
först, sist och steg ska vara heltal.
först anger skivans startindex, sist anger första index som inte ska vara med i skivan.
steg anger vilket steg man ska använda för att välja nästa element från sekvensen. Om man har ett negativt steg, väljs elementen bakifrån.
Man kan utelämna någon eller några av först, sist, eller steg, men om man utelämnar först eller sist måste kolontecken ändå vara med.
Utelämnas först antas att den är lika med noll, utelämnas sist antas att den är lika med len(s), och utelämnas steg antas att den är lika med 1.
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Skapa en variabeln som innehåller strängen 'pytonorm'. Använda sedan denna för att skapa tre skivor som innehåller texterna 'ton', 'norm', 'not'.

Code: Select all

text = 'pytonorm'
print(text[2:5])
print(text[4:])
print(text[4:1:-1])
1. Tilldela variabeln text 'pytonorm'.
2. Skriv ut bokstäverna från index 2 till index 4 (sist anger första indexet som inte ska vara med i skivan)
3. Skriv ut bokstäverna från index 4 och alla bokstäver i strängen som följer detta index.
4. Skriv ut bokstäverna i baklänges ordning mellan index 4 och index 1.
'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. Hur många blanka tecken finns det i en text?

Code: Select all

# Räkna blanka tecken, version 1
s = input('Skriv en text: ')
n = 0
for i in range(0, len(s)):
    if s[i] == ' ':
        n = n + 1
print(f'Texten innehåller {n} blanka tecken')
1. Användaren för skriva in en text som lagras i variabeln s
2. Vi behöver en räknare som håller koll på hur många blanka tecken programmet stöter på, n.
3. För i i intervallet 0 till strängens längd:
4. Om tecknet på position i i strängen är ett mellanslag, addera 1 till n.
5. Repetera för alla tecken i strängen
6. Skriv ut hur många blanka tecken strängen innehöll
'cause the freak inside controls my mind
Post Reply