Page 6 of 11

Re: Python

Posted: 06 Jan 2022, 14:40
by Nobel
else-del.En sak som skiljer Python från andra vanliga programmeringsspråk är att while-satser och for-satser kan ha en else-del. Här är ett exempel.

Code: Select all

# Gissa talet
import random
största = int(input('Det största möjliga talet? '))
försök = int(input('Hur många försök får man? '))
tal = random.randint(1, största)
for i in range(försök):
    gissning = int(input('Gissa talet? '))
    if gissning < tal:
        print('För litet')
    elif gissning > tal:
        print('För stort')
    else:
        print('Rätt gissat')
        break
else:
    print('Inga fler försök')
    print('Talet var', tal)
1. Importera modulen random vilken innehåller funktioner relaterade till slumpning.
2. Användaren för ange hur stort det största talet ska vara och hur många gissningar användaren får.
3. tal blir ett slumpmässigt tal mellan 1 och det största talet.
4. För i i intervallet försök, alltså så många försök som användaren angivit:
5. Gör en gissning, det ska vara ett heltal och gissningen lagras i variabeln gissning som ett heltal.
6. Om gissningen är mindre än rätta talet, skriv ut att gissningen är för liten.
7. Om gissningen är större än det rätta talet, skriv ut att gissningen är för stort.
8. Annars har användaren gissat rätt. Bryt då for-loopen.
9. Om for-loopen bryts på "naturlig" väg, alltså att antalet försök är lika många som variabeln försök. Gå till sista else-satsen och skriv ut Inga fler försöks Talet var, tal.

Re: Python

Posted: 06 Jan 2022, 15:26
by Nobel
Brottas för tillfället med en övning.

Skriv ett program som läser in ett godtyckligt antal positiva tal. När användaren skriver in ett negativt tal ska programmet skriva ut det största och det minsta av de positiva talen.

Re: Python

Posted: 06 Jan 2022, 15:38
by Nobel
Vill ha in logik i form av en if-sats, men vet inte hur jag ska skriva den. Detta är vad jag kommit fram till hittills.

Code: Select all

n = int(input('Ange hur många tal du vill skriva in: '))
minsta = 0 
största = 0
for i in range(n):
    tal = int(input('Ange ett tal '))
print(minsta, största)

Re: Python

Posted: 06 Jan 2022, 15:53
by Nobel
Det gick bättre med nästa uppgift. Skriv ett program som skriver ut en tabell för talen 1 till 12. På varje rad i tabellen ska talet visas liksom talet i kvadrat och talet i kubik.

Code: Select all

for i in range(1, 13):
    x = i
    x2 = i**2
    x3 = i**3
    print(f'{x:3}{x2:6}{x3:6}')
1. För i i intervallet 1-12
2. Ge x värdet i, ge x2 värdet i*2, ge x3 värdet i^3
3. Upprepa 11 gånger

Utskriften blir:

Code: Select all

  1     1     1
  2     4     8
  3     9    27
  4    16    64
  5    25   125
  6    36   216
  7    49   343
  8    64   512
  9    81   729
 10   100  1000
 11   121  1331
 12   144  1728

Re: Python

Posted: 06 Jan 2022, 15:54
by Klankedinken
Kan ni flytta den här tråden till hobby och intressen?!

Re: Python

Posted: 06 Jan 2022, 16:15
by Nobel
Övning. På en mycket farlig arbetsplats erbjuds man följande lön: första dagen är lönen 1 öre, sedan fördubblas lönen varje dag. Skriv ett program som räknar ut hur länge man behöver arbeta för att tjäna ihop 10 000 000 kr.

Code: Select all

förstalön = 0.01
sistalön = 10_000_000
dagar = 0
while förstalön <= sistalön:
    förstalön *= 2
    dagar += 1
print(dagar)
1. förstalön är 0.01 kr när beräkningen börjar
2. sistalön är 10 000 000 kr
3. dagar är 0 när beräkningen börjar
4. Medan förstalön <= sistalön fortsätt loopen
5. förstalön fördubblas
6. dagar räknas
7. När förstalön >= sistalön så bryts loopen
8. Antal dagar det tog skrivs ut.

Svar:

Code: Select all

30

Re: Python

Posted: 06 Jan 2022, 16:34
by Nobel
Övning. Skriv ett program som visar en multiplikationstabell enligt följande modell. Programmet ska utformas så att man läser in antal rader som ska skrivas ut. Tips: använd nästlade for-satser.

Såhär ska utskriften se ut:

Code: Select all

     1     2     3     4     5     6     7     8     9
     2     4     6     8    10    12    14    16    18
     3     6     9    12    15    18    21    24    27
     4     8    12    16    20    24    28    32    36
     5    10    15    20    25    30    35    40    45
     6    12    18    24    30    36    42    48    54
     7    14    21    28    35    42    49    56    63
     8    16    24    32    40    48    56    64    72
     9    18    27    36    45    54    63    72    81
Kod:

Code: Select all

for i in range(1, 10):
    print()
    for j in range(1, 10):
        n1 = i * j
        print(f'{n1:6}', end='')
1. Skapa en for-loop som repeteras 9 gånger.
2. Kör en print() för att göra ett radbyte.
3. Skapa en till for loop som repeteras 9 gånger.
4. Varje gång for j in range(1, 10) körs, tilldela variabeln n1 i * j.
5. Skriv ut n1 och avsluta utskriften utan att byta rad.

Re: Python

Posted: 06 Jan 2022, 16:35
by Nobel
Klankedinken wrote: 06 Jan 2022, 15:54 Kan ni flytta den här tråden till hobby och intressen?!
Jag kan inte flytta trådar.

Re: Python

Posted: 06 Jan 2022, 16:36
by Klankedinken
Men du kan koda? Skicka ett meddelande till Richard! Jag kan göra det så flyttar han den!

Re: Python

Posted: 06 Jan 2022, 17:03
by Richard
Ja, jag försöker flytta den till IT-forumet.

Re: Python

Posted: 06 Jan 2022, 17:03
by Nobel
Schysst!

Re: Python

Posted: 06 Jan 2022, 17:06
by Klankedinken
Tack!