7100 listor - del 4

Välj ut en del av en lista

# index     0    1    2    3    4    5    6    7
my_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']  
print(my_list[2]) # c
print(my_list[:2]) # ['a', 'b']
print(my_list[2:5])  # ['c', 'd', 'e']
print(my_list[2:]) # ['c', 'd', 'e', 'f', 'g', 'h']

Veta mer?

Kör följande kod i python-konsollen:

type(["blå", "gul", "röd"])

Svaret blir:

<class 'list'>

I korthet kan man säga att list är en datatyp för listor.

Dokumentation för list

Kolla gärna upp count() i dokumentationen för list.

Exempel - ändra värde på element i lista mm

Kod:

import random

tärningar = []

for i in range(20):
    # lägg till slumptal, 1 till 4, i listan tärningar
    tärningar.append(random.randint(1,4))

print(tärningar)
print("min", min(tärningar))
print("max", max(tärningar))
print("summa", sum(tärningar))
print("antal fyror", tärningar.count(4))

# räkna antal ettor
antal_ettor = 0
for tärning in tärningar:
    if tärning == 1:
        antal_ettor = antal_ettor + 1

print("antal ettor", antal_ettor)

# fungerar inte om vi vill ändra på värden i listan
for tärning in tärningar:
    tärning = 5 - tärning

print(tärningar)

# ändra på värden i listan
# invertera listan: 1 <--> 4 och 2 <--> 3
for i in range(len(tärningar)):
    tärningar[i] = 5 - tärningar[i]

print(tärningar)

Exempel på utskrift vid körning:

[2, 3, 3, 4, 4, 4, 4, 2, 3, 1, 3, 2, 4, 1, 2, 1, 1, 4, 3, 4]
min 1
max 4
summa 55
antal fyror 7
antal ettor 4
[2, 3, 3, 4, 4, 4, 4, 2, 3, 1, 3, 2, 4, 1, 2, 1, 1, 4, 3, 4]
[3, 2, 2, 1, 1, 1, 1, 3, 2, 4, 2, 3, 1, 4, 3, 4, 4, 1, 2, 1]

Uppgifter

1 Byt bokstäver

lista = [0, 2, 0, 1, 2, 1, 0, 1, 1, 2, 0, 0]

Byta alla nolor mot 3.

2 Primtal (svår)

Spara alla primtal under 100 i en lista. Skriv ut listan.

Tips 1: gör enligt flödesschemat nedan.

Tips 2:

Pseudokod:

tal_lista innehåller 2, 3, 4, ..., 100
lista primtal är tom
upprepa så länge som tal_lista inte är tom
    sista talet i tal_lista är ett primtal, FLYTTA det till primtal
    stryk alla tal i tal_lista som är delbara med det sista primtalet i primtal

7 Black Jack - större uppgift

Du ska skriva ett program där man kan spela Black Jack mot datorn.

Spelets regler

Dealern ger spelaren två kort och sig själv ett kort. Du erhåller din poäng genom att addera kortens värden.
Kortens värde i Black Jack är för korten två till tio valören som står på kortet. Knektar, damer och kungar räknas som tio och ess räknas som elva eller ett. Esset räknas alltid som elva förutom när din poäng överstiger 21, då räknas esset som ett.

Enklare regler för kortens valör

Om du vill göra det lite lättare för dig själv kan du låta kortens värde vara som följer. Korten två till tio har det värde som kortet anger, ett ess är värt 1, en knekt är värd 11, en dam är värd 12 och en kung är värd 13.

spelets gång

Spelaren måste välja ett av följande alternativ:

Hit – Om du inte är nöjd med din poäng och vill ha ett kort till. Du fortsätter att välja hit tills du är nöjd med din poäng eller blir tjock.

Stand – Om du inte vill ha fler kort.

Efter att spelaren gjort sina val spelar dealern sin hand. Dealern måste spela sin han enligt följande regler:

  • Om spelaren blir tjock vinner dealern utan att behöva spela sin hand.
  • Dealern måste välja att ta ett kort till om hans poäng är lägre än 17. Annars måste han välja att inte ta fler kort.

tips

Börja utan kortfärger. Gör en lista som består av fyra 1:or och lika många 2:or och så vidare. Det är kortleken.

Vem vinner?

Spelaren vinner om han har fler poäng än dealern. Spelaren förlorar om han blir tjock (mer än 21 poäng). Dealern förlorar också om han blir tjock.

Objektorienterad version av Black Jack

För den som vill lära sig objektorienterad programmering finns en start på Black Jack i länkad fil på GitHub.

Det finns tre klasser:

  • Card - representerar ett kort t.ex. hjärter dam
  • Deck - kortleken med 52 kort
  • Hand - en spelares hand, det vill säga korten som spelaren har.
  • BlackJack - Anrop av metoden play() i BlackJack startar spelet.

Kod på GitHub

Arbetsgång:

*Ladda ner koden. * Kör koden och se vad som händer. * Ändra på koden så att reglerna för Black Jack följs.

8 Yatzy

Detta är en stor uppgift som tar lång tid att lösa.

Ettor
Tvåor
Treor
Fyror
Femmor
Sexor
Bonus
Ett par
Två par
Tretal
Fyrtal
Liten stege
Stor stege
Kåk
Chans
Yatzy

Fem tärningar kastas.

Välj vilka som sparas. Kasta om övriga.

Välj vilka som sparas. Kasta om övriga.

Välj en av ovanstående att skriva in summan av tärningsögonen på. Bonus kan ej väljas.

Yatzy fås om fem tärningar är lika. Det ger 50 poäng.

Bonus på 50 poäng fås om summan av ettor, tvåor, ..., sexor är minst 63.

Den som har störst totalsumma vinner.