From 2158fab9673778510a89eecb3a9d18c5ad843da0 Mon Sep 17 00:00:00 2001 From: J-onasJones Date: Tue, 21 Nov 2023 19:30:13 +0100 Subject: [PATCH] ue04 --- .gitignore | 1 + EPR/ue04/7987847_epr_blatt-04.zip | Bin 0 -> 2288 bytes EPR/ue04/README.md.txt | 36 ++++++ EPR/ue04/main.py | 192 ++++++++++++++++++++++++++++++ 4 files changed, 229 insertions(+) create mode 100644 EPR/ue04/7987847_epr_blatt-04.zip create mode 100644 EPR/ue04/README.md.txt create mode 100644 EPR/ue04/main.py diff --git a/.gitignore b/.gitignore index 6714baa..d4de9d1 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,6 @@ __pycache__ /EPR/ue01/7987847_epr-blatt01.zip /EPR/ue02/7987847_epr-blatt02.zip /EPR/ue03/7987847_epr-blatt03.zip +/EPR/ue04/7987847_epr-blatt04.zip /GPR/ue03/gpr_blatt03_7987847_werner.zip \ No newline at end of file diff --git a/EPR/ue04/7987847_epr_blatt-04.zip b/EPR/ue04/7987847_epr_blatt-04.zip new file mode 100644 index 0000000000000000000000000000000000000000..1d604b1d4016d6b5456d2f28fc5e259abb555fb5 GIT binary patch literal 2288 zcmZ{mc{J2(1IK@6j3JSI3u8^Dj7Sr*GqxQj_EK@`> zmd0Ahl3k4L+A74W`<`>pJ>By@&-p&fKi}t{=leaME0@8HJOBVN0}}TMHh94Y#}NPC?E{naPh_>0z$3OEC5(@!_i&qNQ4kpfPwKV7y$lSR%}PHqxu{X3pOVAq3Q9{ zOCCnNPe70*_$fpnN zMpUZDx@@xv+w*d22dkca;@jZ6cmXrHE=9+ouI~yS&l?pNoaN>d7sG)jEjV2*cy+%T&?Yq!3b_!`+p!+a+TuRlPFZ$=^1d8j3h?PJX;tS^FmzkoBZ_ zcmoG{17~)$s=!bkNsy*ENy|{hF)S&=aAI|RH;s$wOIWu|8ly)a`$Sl~mQovMQgf-S z(!O!4hx6p7VIgC6ie z9fBey-bbrl1iF3otDploTF&cy813ZiQ_C!90S`xeg_iStA7f*wg}Dm~>K=O$d8ZWb znV336iAI$y?hI$VH?|*aswQV@!W{Tf=7ERgl+vn!QP=f0muZFRjYehj7{+>>UN%7< z8rtktNXg8fwB&s&A0qZ3JyuZEH|jh zEfE+p{Hl_gws2bms(PugZ)*vr^->~bFmv{SXy4tFo|H;Hn6b*MGT3_{y}425xO3ON z4@7F22a4A!%KTysQ<;=>aV177cS1UoQ8_f!PUCI)!KEhhlarm@HmPd3*qE3$p(2yA zEvI!lcZq{}4ysX6;Ynp+iM{`oS@xj9o5vE*QPk&37JVWbWnX_RaFW8go_N#}s&ER; zQ-X0*-|}+1WEG4FvunAU4c=_2%$$LYrDm?d4w*r&JpO8>b>8Ik)~dOcncUG6(4O`Y z2=DUw+@!|kwm`QI>9!VmTaBsCtK*4~f?FJPK!fM(j;(GA@2o8<#aC*W8)CU(!ZWLf zGDFXzH<9FX(p_kjnbmA@ECo$*`jnGCZ-JsI&6;S_(Eio6NIaX0O)8#O#pbn~YK`4# z>YW5fH1!~$o)KBm!+#Qta|=$J|7=qg+4wYhiC8GT+t^?jXpj@ne^C$` z$id~9W9$_D7|ze*=3Z+WB5SOOY@<`(M$Pv>J3~&M){V+4@UV8p41Cz-Gf*K0pW){D zJl5~cHlqeF7AUeAnJg@8BU+3_Nnje{tSiSM^-*~osJ>u* zQ4Cl9u3O)S1RE%u;#v#{00tNVfbFPmEl}EerYOV>H$+fK&|jsSu;b{Sf27|^mw+C{ z4rp;ie6#7ko@R(i7)*U-eS?A5i_t1=S7+$YVNptB?M{F1{&D$mux2WZ-i;N0B_@F) zUc}Q#_wh)0Z0*g<%At+Qb`+IRwlBSQL8z-^C}{5WVg1qD#0hXZ>g%oZWm?7hw(5$5 zEnrpieWOp%;tTn#ll8$EQm})tj_PpU(_YYFWV1+5RLhO`68!uNovoeQ$(HZ6N}oY= z8Q@9*u@`EER^u4emAngFgVS>-13y}Lc)EzI7k{n*=Vu4L#16bIABSge?Z0C3Eq!oqLEFL(bO^;u z+pjRzCknM9_mdR@W(owC%Gagq1vb)T-qpbEo{N;DG=1a(nSa`5L(|8RUh(abr!HPX zbEfdXHIp}A^e`9+$kZRY7Wh{hJx!`rRjz~mAuD7`NB-D+yv)=g9}Q`NjOb?>y|TXg z#x~_kZ`iS|+X3x~qn5$mOVxGQ5uB_VyaWG5NY5C%<%0p5XsP`v!h^MTIejzk1Q|rK~(zDW@ zB@B6->@4fzF*-6?&dP(mi$V7iPDYm9Y#NzyMLy((bx&0ld4;)hoY(|IWY@TikQ+o0 zG`c4gzA`0nN+LMKpKr4QVV(FcoHooqsQ7G65b-mF{p<8MNkINb62E=uf13R}8UHl% fKf;sWa&lz(D<}W5gfRVj8FV!Bj&@b%U$_4PO=kWG literal 0 HcmV?d00001 diff --git a/EPR/ue04/README.md.txt b/EPR/ue04/README.md.txt new file mode 100644 index 0000000..03b5cea --- /dev/null +++ b/EPR/ue04/README.md.txt @@ -0,0 +1,36 @@ +author: 7987847, Werner + + +Zur Nutzung muss eine kompatible Python version installiert sein. +Akzeptiert werden alle Python 3.x Versionen. + +Das Programm kann mit dem Befehl `python3 main.py` im Ordner gestartet werden. + + +Oben ist der code zu sehen der hier nun beschrieben wird: + +Zuerst wird der Spieler nach der Anzahl der Spieler gefragt. +Danach wird er nach der Anzahl der Karten gefragt. +Zuletzt wird er nach dem Trumpf gefragt. + +Danach wird eine Liste mit allen Karten erstellt. +Diese Liste wird dann gemischt. +Danach werden die Karten an die Spieler verteilt. + +Zuletzt werden die Karten ausgegeben und mit dem Trumpf verglichen. + +Hinweis: Die Eingaben erlauben nur positive Zahlen und keine Buchstaben (bis auf den Trumpf). + Bei einer falschen Eingabe kommt es zu einem Fehler. +Hinweis: Bei der Eingabe des Trumpfs ist die Groß- und Kleinschreibung wichtig. + Es wird der erste Buchstabe groß geschrieben und der Rest klein. + +Testfälle +--- +Im Programmcode sind zu jeder der beiden Mittel jeweils 3 Testfälle angegeben. + +PEP8 +--- +Der Programmcode ist soweit wie möglich nach PEP8 abgestimmt. +Von der Aufgabe vorgegebene Funktions- und Variablennamen wurden beibehalten. +Diese sind nicht PEP8 konform (snake_case naming). + diff --git a/EPR/ue04/main.py b/EPR/ue04/main.py new file mode 100644 index 0000000..eb3c317 --- /dev/null +++ b/EPR/ue04/main.py @@ -0,0 +1,192 @@ +'''EPR Übungsblatt 04''' +__author__="7987847, Werner" + +import random + +# a) +def create_card_list(number_of_cards:int) -> [(int, str)]: + '''Erzeugt eine Liste mit Karten mit den vier Farben + und Zahlen von 1 bis number_of_cards + number_of_cards: Anzahl der Karten + ''' + card_list = [] + for i in range(1, int((number_of_cards+1)/4)+1): + card_list.append((i, "Kreuz")) + card_list.append((i, "Pik")) + card_list.append((i, "Herz")) + card_list.append((i, "Karo")) + return card_list + + +# b) +def shuffle_card_list(cards:[(int, str)]) -> [(int, str)]: + '''Mischt eine Liste mit Karten + cards: Liste mit Karten + ''' + random.shuffle(cards) + return cards + + +# c) +def compare_two_cards(card_one:(int, str), card_two:(int, str)) -> int: + '''Vergleicht zwei Karten + card_one: Erste Karte + card_two: Zweite Karte + ''' + if card_one[0] < card_two[0]: + return 0 + if card_one[0] == card_two[0]: + return 1 + return 2 + + +# d) +def compare_two_cards_trump(card_one:(int, str), card_two:(int, str), +trump:str) -> int: + '''Vergleiche Zwei Karten mit dem Trumpf + ''' + if card_one[1] == trump and card_two[1] != trump: + return 0 + if card_one[1] != trump and card_two[1] == trump: + return 1 + return compare_two_cards(card_one, card_two) + + +# e) +def hand_out_cards(list_cards: [(int, str)], players: int, number_of_cards: +int) -> [[(int, str)]]: + '''Teilt die Karten an die Spieler aus + list_cards: Liste mit Karten + players: Anzahl der Spieler + number_of_cards: Anzahl der Karten pro Spieler + ''' + list_players = [] + for _ in range(players): + list_players.append([]) + + for _ in range(number_of_cards): + for j in range(players): + list_players[j].append(list_cards.pop(0)) + + return list_players + + +def main(): + '''Hauptprogramm''' + # Testfälle + + # a) + # create_card_list(0) + # Rückgabe: [] + + # create_card_list(32) + # Rückgabe: [(1, 'Kreuz'), (1, 'Pik'), (1, 'Herz'), (1, 'Karo'), + # (2, 'Kreuz'), (2, 'Pik'), (2, 'Herz'), (2, 'Karo'), (3, 'Kreuz'), + # (3, 'Pik'), (3, 'Herz'), (3, 'Karo'), (4, 'Kreuz'), (4, 'Pik'), + # (4, 'Herz'), (4, 'Karo'), (5, 'Kreuz'), (5, 'Pik'), (5, 'Herz'), + # (5, 'Karo'), (6, 'Kreuz'), (6, 'Pik'), (6, 'Herz'), (6, 'Karo'), + # (7, 'Kreuz'), (7, 'Pik'), (7, 'Herz'), (7, 'Karo'), (8, 'Kreuz'), + # (8, 'Pik'), (8, 'Herz'), (8, 'Karo')] + + # create_card_list(-10) + # Rückgabe: [] + + # b) + # shuffle_card_list([]) + # Rückgabe: [] + + # shuffle_card_list([(1, 'Kreuz'), (1, 'Pik'), (1, 'Herz'), (1, 'Karo'), + # (2, 'Kreuz'), (2, 'Pik'), (2, 'Herz'), (2, 'Karo'), (3, 'Kreuz'), + # (3, 'Pik'), (3, 'Herz'), (3, 'Karo'), (4, 'Kreuz'), (4, 'Pik'), + # (4, 'Herz'), (4, 'Karo'), (5, 'Kreuz'), (5, 'Pik'), (5, 'Herz'), + # (5, 'Karo'), (6, 'Kreuz'), (6, 'Pik'), (6, 'Herz'), (6, 'Karo'), + # (7, 'Kreuz'), (7, 'Pik'), (7, 'Herz'), (7, 'Karo'), (8, 'Kreuz'), + # (8, 'Pik'), (8, 'Herz'), (8, 'Karo')]) + # Rückgabe: [(6, 'Pik'), (1, 'Kreuz'), (4, 'Karo'), (5, 'Kreuz'), + # (8, 'Karo'), (6, 'Herz'), (3, 'Herz'), (1, 'Herz'), (4, 'Pik'), + # (8, 'Pik'), (2, 'Kreuz'), (5, 'Pik'), (3, 'Karo'), (2, 'Herz'), + # (7, 'Pik'), (2, 'Pik'), (7, 'Herz'), (1, 'Pik'), (8, 'Herz'), + # (7, 'Karo'), (6, 'Karo'), (5, 'Herz'), (4, 'Herz'), (3, 'Pik'), + # (2, 'Karo'), (5, 'Karo'), (6, 'Kreuz'), (1, 'Karo'), (8, 'Kreuz'), + # (3, 'Kreuz'), (7, 'Kreuz'), (4, 'Kreuz')] + # (Kann auch anders aussehen) + + # shuffle_card_list([(1, 'Kreuz'), (1, 'Pik'), (1, 'Herz'), (1, 'Karo')] + # Rückgabe: [(1, 'Pik'), (1, 'Kreuz'), (1, 'Karo'), (1, 'Herz')] + # (Kann auch anders aussehen) + + # c) + # compare_two_cards((1, 'Kreuz'), (1, 'Pik')) + # Rückgabe: 1 + + # compare_two_cards((1, 'Kreuz'), (2, 'Pik')) + # Rückgabe: 0 + # compare_two_cards(('Pik), (1)) + # Rückgabe: TypeError: 'int' object is not subscriptable + + # d) + # compare_two_cards_trump((1, 'Kreuz'), (1, 'Pik'), 'Kreuz') + # Rückgabe: 1 + + # compare_two_cards_trump((1, 'Kreuz'), (1, 'Pik'), 'Pik') + # Rückgabe: 0 + + # compare_two_cards_trump((1, 'Kreuz'), (1, 'Pik'), 'Herz') + # Rückgabe: 0 + + # e) + # hand_out_cards([(1, 'Kreuz'), (1, 'Pik'), (1, 'Herz'), (1, 'Karo'), + # (2, 'Kreuz'), (2, 'Pik'), (2, 'Herz'), (2, 'Karo'), (3, 'Kreuz'), + # (3, 'Pik'), (3, 'Herz'), (3, 'Karo'), (4, 'Kreuz'), (4, 'Pik'), + # (4, 'Herz'), (4, 'Karo'), (5, 'Kreuz'), (5, 'Pik'), (5, 'Herz'), + # (5, 'Karo'), (6, 'Kreuz'), (6, 'Pik'), (6, 'Herz'), (6, 'Karo'), + # (7, 'Kreuz'), (7, 'Pik'), (7, 'Herz'), (7, 'Karo'), (8, 'Kreuz'), + # (8, 'Pik'), (8, 'Herz'), (8, 'Karo')], 0, 0) + + # Rückgabe: [] + + # hand_out_cards([(1, 'Kreuz'), (1, 'Pik'), (1, 'Herz'), (1, 'Karo'), + # (2, 'Kreuz'), (2, 'Pik'), (2, 'Herz'), (2, 'Karo'), (3, 'Kreuz'), + # (3, 'Pik'), (3, 'Herz'), (3, 'Karo'), (4, 'Kreuz'), (4, 'Pik'), + # (4, 'Herz'), (4, 'Karo'), (5, 'Kreuz'), (5, 'Pik'), (5, 'Herz'), + # (5, 'Karo'), (6, 'Kreuz'), (6, 'Pik'), (6, 'Herz'), (6, 'Karo'), + # (7, 'Kreuz'), (7, 'Pik'), (7, 'Herz'), (7, 'Karo'), (8, 'Kreuz'), + # (8, 'Pik'), (8, 'Herz'), (8, 'Karo')], 4, 0) + + # Rückgabe: [[], [], [], []] + + # hand_out_cards([], 4, 4) + + # Rückgabe: IndexError: pop from empty list + + print("Es wird ein Kartenspiel erstellt.") + print("Geben Sie die Anzahl der Spieler ein.") + players = int(input("Anzahl der Spieler: ")) + print("Geben Sie die Anzahl der Karten ein.") + number_of_cards = int(input("Anzahl der Karten: ")) + print("Geben Sie den Trumpf ein.") + trump = input("Trumpf: ") + + card_list = create_card_list(number_of_cards) + card_list = shuffle_card_list(card_list) + player_list = hand_out_cards(card_list, players, number_of_cards) + + print("Die Karten werden ausgegeben.") + + for i in range(players): + print("Spieler " + str(i + 1) + ":") + for j in range(number_of_cards): + print(player_list[i][j], end=" ") + print() + + print("Es werden die Karten mit dem Trumpf verglichen.") + + for i in range(players): + print("Spieler " + str(i + 1) + ":") + for j in range(number_of_cards): + if player_list[i][j][1] == trump: + print(player_list[i][j], end=" ") + print() + +if __name__ == '__main__': + main()