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 »

Övning. Skriv ett program som läser in en mening, bestående av minst två ord. PRogrammet ska visa ett meddelande där det dels talar om hur många tecken användaren skrev och dels talar om vilket som var det första och sista ordet. Du får anta att det står minst ett blankt tecken mellan varje ord. Det kan också finnas blanka tecken innan första ordet och efter det sista. Var tvungen att kika i facit för jag började krångla med for-loopar och if-satser.

Code: Select all

text = input('Skriv ord: ')
text = text.strip()
i = text.find(' ')
j = text.rfind(' ')
print('Det första ordet är:', text[0:i])
print('Det sista ordet är: ', text[j+1:])
1. Användaren för mata in ett antal ord
2. strip() tar bort alla blanka tecken från början och slutet av strängen
3. find(' ') hittar indexpositionen för det första mellanslaget
4. rfind(' ') hittar indexpositionen för det sista mellanslaget
5. Det första ordet är bokstäverna från början av strängen till indexposition i
6. Det sista ordet är indexposition j + 1 till slutet av strängen
'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 ett personnr. och skriver ut meddelandet: Grattis! om den aktuella personen har födelsedag. PErsonnr. anges 10 siffror utan minustecken.

Code: Select all

import datetime
dt = datetime.datetime.now()
d = dt.date()
dtext = str(d)
datum = dtext[5:7] + dtext[8:]
persnr = input('Ange ditt personr på formen yymmddnnnn: ')
födelsedag = persnr[2:6]
if datum == födelsedag:
    print('Grattis!')
else:
    print('Inte din födelsedag')
1. Importera modulen datetime som innehåller funktioner för datum och tid
2. Skapa en variabel av typen datetime genom att skriva dt = datetime.datetime.now(). Variabeln dt kommer då innehålla aktuellt datum och klockslag
3. Välj ut datumet med funktionen dt.date()
4. Gör om variabeln d till en sträng
5. Välj ut två skivor som innehåller månad och dag och spara dessa i variabeln datum
6. Be om användarens persnr. 10 siffror
7. Skapa en skiva av persnr som innehåller månad och dag
8. Om datum lika med födelsedag, skriv ut Grattis
9. Annars, skriv ut, Inte din födelsedag

Passande uppgift med tanke på att det är Mikas födelsedag idag
'cause the freak inside controls my mind
User avatar
Inwatto
Lutetiummedlem
Posts: 1713
Joined: 08 Jul 2021, 18:14
Location: Skåne

Re: Python

Post by Inwatto »

Jag har programmerat order/lager/faktureringsprogram i BASIC. Det kallas ibland för smör- och bröd-rutiner. Ingen avancerad matte alls.

Sedan har jag gjort kodlås med C-programmering. Där är utmaningen att processorn är en mikrocontroller och inte så vass. Då måste programmet vara effektivt och snålt, för att man inte ska få problem med fördröjningar. Man vill ju att dörren ska öppnas omedelbart efter man slagit in rätt kod. Sista året jag programmerade, hade vi chip-kort. De kör med kryptering så bara behöriga kan läsa/skriva. Lite mer matte där än annars, men inget allt för avancerat.
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Hur gjorde du när du hoppade över från BASIC till C? Fick du lära dig C från scratch?
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Kikade på facit till övningen ovan och facit hade en mer elegant/städad lösning, mindre kod.

Code: Select all

import datetime
nr = input('Skriv ditt personnummer som ååmmddnnnn: ')
dt = datetime.datetime.now()
s = str(dt.date())
if nr[2:4] == s[5:7] and nr[4:6] == s[8:]:
    print('Grattis!')
1. Importera modulen datetime som innehåller funktioner relaterade till datum och tid
2. Skriv in dit persnr som lagras i variabeln nr
3. Skapa en variabel av typen datetime
4. dt innehåller både datum och tid, för att välja ut datumet från variabeln dt, använd funktionen date(), och förvandla den samtidigt till en sträng
5. Om persnr indexposition 2:5 är samma som indexposition för strängen för datum 5 till 7. och det samma gällande för siffrorna för datum
6. Skriv ut Grattis
'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 ett personnummer och avgör om personen är man eller kvinna. (Den näst sista siffran är udda för män och jämn för kvinnor).

Code: Select all

persnr = input('Skriv in ditt personnummer ååmmddnnnn: ')
n = int(persnr[8])
if n % 2 == 0:
    print('Du är kvinna')
else:
    print('Du är man')
1. Användaren skriver in persnr på formen yymmddnnnn.
2. Plocka ut en skiva på näst sista numret och omvändla till en strängen till en int
3. Om n är jämnt delbart med 2 (alltså ett jämnt tal), så tillhör persnr en kvinna, skriv ut att Du är en kvinna
4. Annars är n inte jämnt delbart med 2 (alltså ett udda tal), skriv ut att Du är en man
'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 och översätter den till det så kallad rövarspråket. I detta dubblas alla konsonanteroch ett 'o' placeras mellan de dubblerade konsonanterna. Vokaler och övriga tecken ändras inte. Fick hjälp av facit. Jag började att krångla med vokalerna istället.

Code: Select all

konsonanter = 'bcdfghjklmnpqrstvxz'
s = input('Skriv en text: ')
r = ''
for e in s:
    t = e.lower()
    if t in konsonanter:
        r += t + 'o' + t 
    else:
        r += t 
print(r)
1. tilldela variabeln konsonanter alla konsonanter
2. Be användaren att skriva in en text
3. Skapa en tom sträng
4. För e i texten som användaren skrivit in:
5. Gör om alla bokstäver till små bokstäver med funktionen .lower(), spara bokstaven i variabeln t
6. Om t finns i konstanter ta konsonanten addera ett 'o' och addera konsonanten till strängen r
7. Annars är bokstaven ingen konsonant och addera tecknet till strängen r
8. Skriv ut strängen r
'cause the freak inside controls my mind
User avatar
Richard
Administratör
Posts: 7969
Joined: 10 May 2021, 13:45
Location: Ängelholm
Contact:

Re: Python

Post by Richard »

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

Det måste väl vara på lågnivå, typ assembler o sånt?
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 »

Skriv ett program som läser in en text som innehåller rövarspråk. Programmet ska översätta rövarspråket tillbaka till vanligt språk. Du kan för enkelhetens skull förutsätta att texten innehåller korrekt rövarspråk. Var helt lost på denna uppgiften så var tvungen att kika i facit, och är inte säker på att jag förstår koden still.

Code: Select all

konsonanter = 'bcdfghjklmnpqrstvxz'
s = input('Skriv rövarspråk: ')
i = 0
while i < len(s):
    print(s[i], end='')
    t = s[i].lower()
    if t in konsonanter:
        i += 3
    else:
        i += 1
1. Tilldela varibeln konsonanter en sträng av alla konsonanter
2. Användaren får skriva in en text på rövarspråk
3. i = 0 är en counter
4. Medan i är mindre än längden på strängen s:
5. Skriv ut bokstaven i position i från strängen s (första bokstaven kan vara en stor bokstav, inte som i övningen där vanligt språk skulle översättas till rövarspråk och alla bokstäver blev små)
6. Gör om de andra bokstäverna till små bokstäver och lagra dessa i variabeln t
7. Om bokstaven t finns i konstanter:
8. Hoppa fram 3 steg i countern, alltså hoppa över o:et och konsonantdubbletten
9. Om det är en vokal eller annat tecken som inte är en konstant, fortsätt att gå igenom bokstäverna med steget 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 »

Ett anagram får man om man utgår från ett ord eller en mening och kastar om bokstäverna så att ett nytt ord eller en ny mening framträder. Av mening C är lurigt kan man tex bilda anagrammet Curt Ärlig. Skriv ett program som undersöker om en text är ett anagram av en annan text. De två texterna ska läsas in av programmet.

Code: Select all

text1, text2 = input('Text 1: '), input('Text 2: ')
text1, text2 = text1.replace(' ', ''), text2.replace(' ', '')
text1, text2 = text1.lower(), text2.lower()
text1, text2 = sorted(text1), sorted(text2)
if text1 == text2:
    print('Anagram!')
else:
    print('Inte anagram!')
1. Varibeln text1 och text2 är strängar som bestäms av användaren
2. Byt ut alla mellanslag mot inget tecken med functionen .replace()
3. Gör om alla bokstäverna i texterna till små bokstäver med funktionen .lower()
4. Sortera alla bokstäverna i strängen från den med lägst siffervärde till högst siffervärde med funktionen sorted()
5. Om den sorterade listorna är samma är orden anagram, skriv ut Anagram!
6. Annars är de olika så skriv ut, Inte anagram!
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

Facit hade en annan lösning och använde for-loopar.

Code: Select all

t1 = input('Den första texten: ')
t2 = input('Den andra texten: ')
t1 = t1.replace(' ', '').lower()
t2 = t2.replace(' ', '').lower()
anagram = True
for t in t1:
    n1 = 0
    for e in t1:
        if e == t:
            n1 += 1
    n2 = 0
    for e in t2:
        if e == t:
            n2 += 1
    if n1 != n2:
        anagram = False
        break
if anagram:
    print('Anagram')
else:
    print('Inte anagram')
1. Användaren får mata in två texter
2. Byt ut alla mellanslag i strängarna mot inga mellanslag
3. Sätt variabeln anagram till Sant
4. Löp igenom alla element i variabeln t1 med en for-loop:
5. Börja med att sätta n1 = 0
6. Nästlad for-loop

Förstår inte lösningen. Återgår till den imorgon.
'cause the freak inside controls my mind
User avatar
Nobel
Germaniummedlem
Posts: 3376
Joined: 10 May 2021, 19:48

Re: Python

Post by Nobel »

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

Det måste väl vara på lågnivå, typ assembler o sånt?
Misstänker att koden måste vara så effektiv som möjligt.
'cause the freak inside controls my mind
Post Reply