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 »

Operatorerna + och * .

Operatorn + kan användas för att bilda en ny sekvens som är en sammanslagnign av de två operanderna.
Ex. sekvens1 + sekvens2

Operatorn * kan användas för att skapa en ny sekvens som upprepar en sekvens ett visst antal gånger.
Ex. antal * sekvens, alternativt, sekvens * antal

De ingående operanderna i dessa operationer ändras inte
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Gemensamma funktioner för sekvenser. I denna ruta betecknar s och t sekvenser, och m och n heltal.

len(s) ger antalet element i s
min(s) ger det minsta elementet i s
max(s) ger det största elementet i s
sum(s) ger summan av elementet i s (ej för typen str)
s.count(t) anger hur många gånger t finns i s
s.count(t, n, m) anger hur många gånger t finns i intervallet n till m-1 i s
s.index(t) ger index för första förekomsten av t i s, ger en felutskrift om t inte finns
s.index(t, n, m) som ovan men söker bara i intervallet n till m-1
sorted(s) ger som resultat en sorterad lista, s ändras inte
'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. Plocka ut '990314' ur strängen ' Erik Andersson 990314-2714 '

Code: Select all

a = '  Erik Andersson 990314-2714    '
a = a.strip()
i = a.rfind(' ')+1
j = a.find('-')
b = a[i:j]
print(b)
1. Tilldela variabel a strängen Erik Andersson 990314-2714
2. anropa strip() som är en funktion som anropar både funktionen lstrip() och rstrip() vilka tar bort blanka tecken i början, respektive slutet av strängen
' Erik Andersson 990314-2714 ', blir, 'Erik Andersson 990314-2714'
3. rfind() är en funktion som ger index för förekomsten av det inom parateserna i strängen, den räknar bakifrån. Indexet blir första blanka tecknet bakifrån. +1 behövs för att få startpositionen för datumet
4. find() fungerar på samma sätt som rfind() men den räknar framifrån strängen tills den hittar det som står inom paranteserna
5. Skapa en skiva b, som innehåller sekvensen i:j, vilket är hela datumet
6. Skriv ut datumet
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Ändra i exemplet ovan så att b kommer att innehålla födelsedagen enligt modellen dd/mm, dvs. 14/03.

Code: Select all

a = '  Erik Andersson 990314-2714    '
a = a.strip()
i = a.rfind(' ')+1
j = a.find('-')
b = a[i+4:j] + '/' + a[i+2:i+4]
print(b)
Stegen är samma som för exemplet ovan med en skillnad, b = a[i+4:j] + '/' + a[i+2:i+4]. Det innebär att variabeln b ska innehålla följande. En skiva från 990314, som innehåller i+4 (1 i 990314) till slutet på strängen, alltså j. Plus ut slash. Plus en skiva till från 990314. i+2 motsvarar 0 i 990314 sedan sträcker den sig till position 4, vilket göra att 3an i 990314 inkluderas.
'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 läser in en text. Programmet ska sedan ta bort alla blanka tecken (mellanslag) från texten och skriva ut resultatet.

Code: Select all

text = input('Skriv in en text: ')
for i in text:
    text = text.replace(' ', '')
print(text)
1. Användaren får mata in en sträng
2. För varje bokstav i text:
3. Byt ut mellanslag och byt ut mot inget mellanslag
4. Skriv ut texten.

Facit:

Code: Select all

s = input('Skriv en text: ')
s = s.replace(' ', '')
print(s)
Det verkar inte behövas en for-loop för att gå igenom varje bokstav för sig. Det verkar som att det är inbyggt i funktionen replace()
'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. Ett palindrom är en text som blir samma när man läser det baklänges som när man läser det framlänges. Ett välkänt exempel är ni talar bra latin. När man läser hoppar man över alla mellanslag. Utöka programmet du skrev i förra uppgiften så att det undersöker om texten du läst in är ett palindrom.

Code: Select all

text = input('Skriv in en text: ')
text = text.replace(' ', '')
palindrom = text[::-1]
if text == palindrom:
    print('Det är ett palindrom')
else:
    print('Inget palindrom')
1. Användaren får mata in en text
2. Byt ut alla mellanslag i strängen mot inga mellanslag
3. Skapa palindromet genom att invertera strängen med [::-1]
4. Om text == palindrom:
5. Skriv ut att det är ett palindrom
6. Annars är det inget palindrom och skriv ut det
'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 »

Nobel wrote: 08 Jan 2022, 11:32 ...
Tack Inwatto, är du en programmeringsguru? :) Uppskattar verkligen din hjälp.
Jag har jobbat 10 år som BASIC-programmerare och 10 år som C-programmerare, så jag har skrivit många if-satser i mitt liv. Har inte programmerat något de sista 21 åren, så Python är rena grekiskan, he he.
User avatar
Richard
Administratör
Posts: 8173
Joined: 10 May 2021, 13:45
Location: Ängelholm
Contact:

Re: Python

Post by Richard »

Inwatto wrote: 08 Jan 2022, 18:20
Nobel wrote: 08 Jan 2022, 11:32 ...
Tack Inwatto, är du en programmeringsguru? :) Uppskattar verkligen din hjälp.
Jag har jobbat 10 år som BASIC-programmerare och 10 år som C-programmerare, så jag har skrivit många if-satser i mitt liv. Har inte programmerat något de sista 21 åren, så Python är rena grekiskan, he he.
Men jag läste häromdagen, att om man väl kan ett programmeringsspråk, så är det lätt att lära sig andra. För det är ju mycket som är samma sak med t.ex loopar o objekt.
Blogg, dagbok och hemsida: https://www.richardhandl.com/
User avatar
Inwatto
Lutetiummedlem
Posts: 1754
Joined: 08 Jul 2021, 18:14
Location: Skåne

Re: Python

Post by Inwatto »

Ja, Richard, logiken är samma och sättet att bryta ner problem i mindre delar. Men, jag är 58 år och har fått elchocker så mitt minne är inte vad en 20-åring har; därför har jag svårt att lära nytt.
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Inwatto wrote: 08 Jan 2022, 18:20
Nobel wrote: 08 Jan 2022, 11:32 ...
Tack Inwatto, är du en programmeringsguru? :) Uppskattar verkligen din hjälp.
Jag har jobbat 10 år som BASIC-programmerare och 10 år som C-programmerare, så jag har skrivit många if-satser i mitt liv. Har inte programmerat något de sista 21 åren, så Python är rena grekiskan, he he.
Hade på känn att du har mycket erfarenhet inom programmering och/eller matematik! Vilka typer av projekt var du involverad i?
'cause the freak inside controls my mind
User avatar
Richard
Administratör
Posts: 8173
Joined: 10 May 2021, 13:45
Location: Ängelholm
Contact:

Re: Python

Post by Richard »

Jag känner han som programmerade Robotsystem 90; https://sv.wikipedia.org/wiki/Robotsystem_90 Det är min pappas barndomskompis. Ja, kanske inte enbart han, men han var med i.a.f.
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 »

Spännande, Richard! Undrar hur en sådan programmeras och vilka funktioner som används... :think:
'cause the freak inside controls my mind
Post Reply