Python
Moderator: Moderator 1
Re: Python
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/
Re: Python
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.
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
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}')
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
Re: Python
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.
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.
* 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}')
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
Re: Python
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.
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.
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}')
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
Re: Python
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.
Re: Python
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.
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
Re: Python
Uppgift. Skriv ett program som läser in en text. Programmet ska undersöka om textens första och sista bokstav är samma.
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
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')
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
Re: Python
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.
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
Re: Python
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'.
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.
Code: Select all
text = 'pytonorm'
print(text[2:5])
print(text[4:])
print(text[4:1:-1])
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
Re: Python
Exempel. Hur många blanka tecken finns det i en text?
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
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')
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