Woche 05#

f-strings#

print("2", ":", 2, ":", 2**0.5)
2 : 2 : 1.4142135623730951
print( f"""zwei plus drei: {2+3}""" )
zwei plus drei: 5
n = 5
print( f"""{n=}:       {  [ (x, x**0.5)  for x in range(0,n) ]   =}""" )
n=5:         [ (x, x**0.5)  for x in range(0,n) ]   =[(0, 0.0), (1, 1.0), (2, 1.4142135623730951), (3, 1.7320508075688772), (4, 2.0)]

datetime#

https://docs.python.org/3/library/datetime.html

from datetime import datetime
geburtstag = "1990-05-15"
geburtsdatum = datetime.strptime(geburtstag, "%Y-%m-%d")
type(geburtsdatum)
datetime.datetime
geburtsdatum.month
5

usw.

Skatkarten#

https://de.wikipedia.org/wiki/Kartesisches_Produkt#Spielkarten, https://de.wikipedia.org/wiki/Farbe_(Kartenspiel)

Rang =  [ 'J', 'A', '10', 'K', 'Q', '9', '8', '7' ]
Farbe = ['♣', '♠', '♥', '♦' ] # Kreuz, Pik, Herz, Karo
[  ('♥', 'K' ), ('♥', 'D' ), ... ] 
[('♥', 'K'), ('♥', 'D'), Ellipsis]
Skatblatt_tupel = []
Skatblatt = []

for r in Rang:
    # print( f"{r=}" )
    for f in Farbe:
        #print( f"{r=}, {f=}" )
        Skatblatt_tupel.append( (f,r)  )
        Skatblatt.append( f"{f}{r}" )
print(Skatblatt)
['♣J', '♠J', '♥J', '♦J', '♣A', '♠A', '♥A', '♦A', '♣10', '♠10', '♥10', '♦10', '♣K', '♠K', '♥K', '♦K', '♣Q', '♠Q', '♥Q', '♦Q', '♣9', '♠9', '♥9', '♦9', '♣8', '♠8', '♥8', '♦8', '♣7', '♠7', '♥7', '♦7']

Mikroaufgabe: erzeugen Sie Skatblatt mit Hilfe von List Comprehension!

Skatblatt = [ f"{f}{r}"      for r in Rang      for f in Farbe      ]
print(Skatblatt)
['♣J', '♠J', '♥J', '♦J', '♣A', '♠A', '♥A', '♦A', '♣10', '♠10', '♥10', '♦10', '♣K', '♠K', '♥K', '♦K', '♣Q', '♠Q', '♥Q', '♦Q', '♣9', '♠9', '♥9', '♦9', '♣8', '♠8', '♥8', '♦8', '♣7', '♠7', '♥7', '♦7']

Zum Knobeln: Gegeben sind 2 Spielkarten, Karo ist Trumpf. Welche schlägt?

Hinweis: Es könnte die Funktion index() nützlich sein, z.B. Rang.index('Q') == 4

# Beispiel
s1 = '♠A' # Herz Ass
s2 = '♣A' # Pik Ass
Farbe
['♣', '♠', '♥', '♦']

Mini-Projekt#

Wählen Sie aus Skatblatt zufällig 2 Karten aus: Bibliothek https://python.readthedocs.io/en/stable/library/random.html#random.sample

# https://python.readthedocs.io/en/stable/library/random.html#random.sample
import random as rd
# Beispiel
# rd.sample( [1,2,3,4,5], 2)
rd.sample(Skatblatt, 2)
['♦Q', '♠9']

Welche Karte schlägt?

Was ist der Stich wert? Zusammenzählen des Wertes beider Karten. (Was ist in Skat der Wert von Bube, Dame, König?)

Entwicklen Sie zunächst in einzelnen Zellen. Schreiben Sie dann eine Funktion stich(s1,s2), die die höherwertige Karte und den Wert des Stiches zurückgibt.

A x A#

https://de.wikipedia.org/wiki/Kartesisches_Produkt#Endliche_Mengen

A = [ 0, 1, 2, 3 ]

Menge M1 aller geordneten Tupel A x A:

M1 = [ (x,y) for x in A for y in A ]
print( M1 )
[(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3), (3, 0), (3, 1), (3, 2), (3, 3)]

Menge M2 aller Tupel A x A, mit x != y (also ist z.B. (0,0) nicht enthalten)

M2 = []

for x in A:
    for y in A:
        if x != y:
            M2.append( (x,y) )
print( M2 )
[(0, 1), (0, 2), (0, 3), (1, 0), (1, 2), (1, 3), (2, 0), (2, 1), (2, 3), (3, 0), (3, 1), (3, 2)]
M2 = [  (x,y)    for x in A       for y in A      if x != y ]
print( M2 )
[(0, 1), (0, 2), (0, 3), (1, 0), (1, 2), (1, 3), (2, 0), (2, 1), (2, 3), (3, 0), (3, 1), (3, 2)]

Menge M3 aller Tupel A x A, mit x < y (also ist z.B. (0,0) oder (1,0) nicht enthalten)

M3 = []

for x in A:
    for y in A:
        if x < y:
            M3.append( (x,y) )
print( M3 )
[(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)]
M4 = []

X = A
for x in X:
    Y = A[x+1:]
    #print( f"{x=}, {Y=}" )
    for y in Y:
        if x < y:
            M4.append( (x,y) )
        else:
            print( f"verworfen: {x},{y} ")
print( M4 )
[(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)]