Page 9 of 11

Re: Python

Posted: 08 Jan 2022, 13:08
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

Re: Python

Posted: 08 Jan 2022, 13:20
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

Re: Python

Posted: 08 Jan 2022, 15:15
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

Re: Python

Posted: 08 Jan 2022, 15:28
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.

Re: Python

Posted: 08 Jan 2022, 16:15
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()

Re: Python

Posted: 08 Jan 2022, 16:25
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

Re: Python

Posted: 08 Jan 2022, 18:20
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.

Re: Python

Posted: 08 Jan 2022, 20:18
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.

Re: Python

Posted: 08 Jan 2022, 20:36
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.

Re: Python

Posted: 09 Jan 2022, 09:07
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?

Re: Python

Posted: 09 Jan 2022, 10:02
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.

Re: Python

Posted: 09 Jan 2022, 10:39
by Nobel
Spännande, Richard! Undrar hur en sådan programmeras och vilka funktioner som används... :think: