first commit
This commit is contained in:
commit
9c046770aa
110
av_sudoku.py
Normal file
110
av_sudoku.py
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
# ++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
# +++++++++++++ Überprüfung Sudoku +++++++++++++
|
||||||
|
# ++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
sudoku1 = [
|
||||||
|
[5,3,4,6,7,8,9,1,2],
|
||||||
|
[6,7,2,1,9,5,3,4,8],
|
||||||
|
[1,9,8,3,4,2,5,6,7],
|
||||||
|
[8,5,9,7,6,1,4,2,3],
|
||||||
|
[4,2,6,8,5,3,7,9,1],
|
||||||
|
[7,1,3,9,2,4,8,5,6],
|
||||||
|
[9,6,1,5,3,7,2,8,4],
|
||||||
|
[2,8,7,4,1,9,6,3,5],
|
||||||
|
[3,4,5,2,8,6,1,7,9]
|
||||||
|
]
|
||||||
|
|
||||||
|
sudoku2 = [
|
||||||
|
[5,3,4,6,7,8,9,1,2],
|
||||||
|
[6,7,2,1,9,5,3,4,8],
|
||||||
|
[1,9,8,3,4,2,5,6,7],
|
||||||
|
[8,5,9,7,5,1,4,2,3],
|
||||||
|
[4,2,6,8,6,3,7,9,1],
|
||||||
|
[7,1,3,9,2,4,8,5,6],
|
||||||
|
[9,6,1,5,3,7,2,8,4],
|
||||||
|
[2,8,7,4,1,9,6,3,5],
|
||||||
|
[3,4,5,2,8,6,1,7,9]
|
||||||
|
]
|
||||||
|
|
||||||
|
sudoku = sudoku1 # einfacher Switch, damit zwischen sudoku1 und sudoku2 umgestellt werden kann ohne Codeanpassungen
|
||||||
|
|
||||||
|
# REMARK: wir arbeiten im ersten Teil mit assert(). Wenn assert True ist, wird einfach weiter gegangen, wenn es falsch
|
||||||
|
# ist, wird ein Error geworfen. Dash heisst, wenn unser Code mit dem assert() jeweils durch läuft ist alles i.O.!
|
||||||
|
|
||||||
|
# Wir werden zu Beginn einfache, unabhängige Überprüfungen schreiben. Haben wir alle zusammen, packen wir diese in
|
||||||
|
# eine Funktion, welche unsere Sudoku überprüfen wird.
|
||||||
|
|
||||||
|
# ASSERTIONS
|
||||||
|
# ++++++++++
|
||||||
|
|
||||||
|
# 1a. Überprüfung, ob alle Werte eingetragen sind -> keine None, keine Lücken etc -> 81 integer Werte
|
||||||
|
# Auftrag: Schreibt das Sudoku in eine 'flache' Liste (nicht verschachtelt) und checkt, ob diese 81 Elemente enthält
|
||||||
|
|
||||||
|
single_row_sudoku_list = []
|
||||||
|
|
||||||
|
for row in sudoku:
|
||||||
|
single_row_sudoku_list.extend(row)
|
||||||
|
|
||||||
|
assert(len(single_row_sudoku_list) == 81)
|
||||||
|
|
||||||
|
# 1b. Auftrag: Checkt, ob 9 Zeilen und 9 Spalten vorliegen.
|
||||||
|
try:
|
||||||
|
assert(len(sudoku) == 9)
|
||||||
|
except AssertionError:
|
||||||
|
print("Assert error")
|
||||||
|
for row in sudoku:
|
||||||
|
assert(len(row) == 9)
|
||||||
|
|
||||||
|
# 2. Auftrag: Checkt, ob alles integer_Werte sind -> EXKURS: list comprehension
|
||||||
|
|
||||||
|
try:
|
||||||
|
for val in single_row_sudoku_list:
|
||||||
|
assert(isinstance(val, int)), f"{val!r} is not int"
|
||||||
|
except AssertionError as error:
|
||||||
|
print(error)
|
||||||
|
|
||||||
|
# 3. Auftrag: Summe in jeder Zeile muss 1+2+3+...+9 = 45 geben. Checkt dies.
|
||||||
|
|
||||||
|
try:
|
||||||
|
for row in sudoku:
|
||||||
|
assert(sum(row) == 45), f"Sum of {row!r} is not 45"
|
||||||
|
except AssertionError as error:
|
||||||
|
print(error)
|
||||||
|
|
||||||
|
# 4. Auftrag: Summe in jeder Spalte muss ebenfalls 45 ergeben. Checkt dies auch. Nutzt für das ein Dictionary also
|
||||||
|
# Container, also z.B. {1: 45, 2: 45, 3: 45, ... 9: 45}
|
||||||
|
|
||||||
|
sum_columns = {}
|
||||||
|
for row in sudoku:
|
||||||
|
for idx, element in enumerate(row):
|
||||||
|
idx = str(idx)
|
||||||
|
if idx in sum_columns:
|
||||||
|
sum_columns[idx] += element
|
||||||
|
else:
|
||||||
|
sum_columns[idx] = element
|
||||||
|
print(sum_columns)
|
||||||
|
|
||||||
|
# Reichen diese ASSERTIONS für die sichere Bestimmung, ob das Sudoku richtig gelöst wurde?
|
||||||
|
|
||||||
|
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
# Wir überprüfen nun, ob in allen Zeilen, Spalten und Blocks alle valid_number=[1,2,3,4,5,6,7,8,9] vorkommen.
|
||||||
|
|
||||||
|
# 5. Auftrag: Zeilenüberprüfung:
|
||||||
|
|
||||||
|
valid_number = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||||
|
|
||||||
|
for row in sudoku:
|
||||||
|
# assert(sorted(row) == valid_number)
|
||||||
|
for element in valid_number:
|
||||||
|
assert(element in row)
|
||||||
|
|
||||||
|
|
||||||
|
# 6. Auftrag: Spaltenüberprüfung:
|
||||||
|
|
||||||
|
# 7. Auftrag: Blocküberprüfung:
|
||||||
|
|
||||||
|
# Wir bauen nun die Code-Stücke aus 5-7 in eine Funktion 'check_sudoku_1()', welche als Argument die sudoku-Liste bekommt
|
||||||
|
# und als Resultat True oder False zurückgeben sollte.
|
||||||
|
|
||||||
|
# 8. Baut diese Funktion und ruft sie auf
|
||||||
10
palindrom_check.py
Normal file
10
palindrom_check.py
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
palindrom = "Malayalam"
|
||||||
|
make_palindrom = ""
|
||||||
|
|
||||||
|
for i in range(len(palindrom)-1, -1, -1):
|
||||||
|
make_palindrom += palindrom[i]
|
||||||
|
|
||||||
|
if make_palindrom.lower() == palindrom.lower():
|
||||||
|
print(f"{palindrom} is a palindrom")
|
||||||
|
else:
|
||||||
|
print(f"{palindrom} not a palindrom")
|
||||||
7
pwd_ok.py
Normal file
7
pwd_ok.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
pwd = "fjkdsaljfklasj432"
|
||||||
|
|
||||||
|
if len(pwd) >= 8:
|
||||||
|
for c in pwd:
|
||||||
|
if c.isnumeric():
|
||||||
|
print("OK")
|
||||||
|
break
|
||||||
5
sort_list.py
Normal file
5
sort_list.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
li = [1, 4, 3, 2, 3, 9, 1]
|
||||||
|
li.sort()
|
||||||
|
print(li)
|
||||||
|
li.sort(reverse=True)
|
||||||
|
print(li)
|
||||||
Loading…
x
Reference in New Issue
Block a user