lehrkraefte:sbtsnr:python:logic

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
lehrkraefte:sbtsnr:python:logic [2022/09/30 18:13]
Karlheinz Schubert
lehrkraefte:sbtsnr:python:logic [2022/10/19 17:10]
Olaf Schnürer [Funktion Erhoehen war falsch]
Line 1: Line 1:
 +====== Entwicklung eines Programms zur Darstellung von logischen Operationen --> Wahrheitstabellen ======
 +
 +
 <code python wahrheitstabelle.py> <code python wahrheitstabelle.py>
 """ """
Line 19: Line 22:
  
 </code> </code>
 +<hidden Show Code>
 <code python wahrheitstabelle-step1.py> <code python wahrheitstabelle-step1.py>
 """ """
Line 41: Line 45:
  
 </code> </code>
 +</hidden>
 <code python wahrheitstabelle-step2a.py> <code python wahrheitstabelle-step2a.py>
 """ """
Line 146: Line 151:
     print(f"{Zeile:5}  ({Zeile:02X})  |  {xTeil}  | {Und():3}  {Oder():3}  {ExOder():3}")     print(f"{Zeile:5}  ({Zeile:02X})  |  {xTeil}  | {Und():3}  {Oder():3}  {ExOder():3}")
     Erhoehen(Zeile, x)     Erhoehen(Zeile, x)
 +</code>
 +
 +====== Funktion Erhoehen oben korrigiert ======
 +
 +<code python wahrheitstabelle-step3-verbessert.py>
 +"""
 +Truth tables
 +"""
 +import operator
 +
 +anzahlVariablen = int(input("Anzahl Variablen [1...9]: "))
 +x = anzahlVariablen * [False]
 +
 +def Oder():
 +    Wert = False
 +    for index in range(anzahlVariablen):
 +        Wert = Wert or x[index]
 +    return Wert
 +
 +def Und():
 +    Wert = True
 +    for index in range(anzahlVariablen):
 +        Wert = Wert and x[index]
 +    return Wert
 +
 +def ExOder():
 +    Wert = False
 +    for index in range(anzahlVariablen):
 +        Wert = Wert ^ x[index]
 +    return Wert
 +
 +def Erhoehe(nr, feld):
 +    index = anzahlVariablen - 1
 +    while feld[index] == True:
 +        x[index] = False
 +        index -= 1
 +    if index >= 0:
 +        x[index] = True
 +
 +UeberschriftxTeil = ""
 +for index in range(anzahlVariablen):
 +    UeberschriftxTeil += f"x{index+1}  "
 +Ueberschrift = f"    Index    |   {UeberschriftxTeil} |  and   or   xor"
 +print(Ueberschrift)
 +print("-" * len(Ueberschrift))
 +
 +for Zeile in range(2**anzahlVariablen):
 +    xTeil = ""
 +    for index in range(anzahlVariablen):
 +        xTeil += f"{x[index]:2}  "
 +    print(f"{Zeile:5}  ({Zeile:02X})  |  {xTeil}  | {Und():3}  {Oder():3}  {ExOder():3}")
 +    Erhoehe(Zeile, x)
 +</code>
 +
 +====== ... und nun noch etwas rumgesponnen ... ======
 +
 +<code python wahrheitstabelle-step3-per-binaerdarstellung.py>
 +"""
 +Truth tables
 +"""
 +leerzeichen = 4 # sollte mindestens 4 sein
 +
 +# Unicode-Nummern gefunden auf https://unicode-table.com/en/blocks/box-drawing/
 +vertikal = '\u2502' # '\uff5c'
 +horizontal = '\u2500' # '\u23af'
 +kreuzung = '\u253c'
 +
 +anzahlVariablen = int(input("Anzahl Variablen [1...9]: "))
 +
 +UeberschriftVariablenTeil = "".join([f'{f"x{index + 1}":>{leerzeichen}}' for index in range(anzahlVariablen)])
 +UeberschriftLogikTeil = f"{'and':>{leerzeichen}}" + f"{'or':>{leerzeichen}}" + f"{'xor':>{leerzeichen}}"
 +print(UeberschriftVariablenTeil + " " + vertikal + UeberschriftLogikTeil)
 +print(horizontal * (len(UeberschriftVariablenTeil) + 1) + kreuzung + horizontal * len(UeberschriftLogikTeil))
 +
 +for index in range(2 ** anzahlVariablen):
 +    binaer = f'{index:0{anzahlVariablen}b}'
 +    binearMitAbstand = "".join([""] + [f'{z:>{leerzeichen}}' for z in binaer])
 +    # # ausführlich:
 +    # und = "1" if binaer.count("1") == anzahlVariablen else "0"
 +    # oder = "1" if binaer.count("1") > 0 else "0"
 +    # xOder = "1" if binaer.count("1") % 2 == 1 else "0"
 +    # print(binearMitAbstand + " vertikal" + f"{und:>{leerzeichen}}" + f"{oder:>{leerzeichen}}" + f"{xOder:>{leerzeichen}}")
 +
 +    # kurz:
 +    print(binearMitAbstand + " " + vertikal + f"{binaer.count('1') == anzahlVariablen:>{leerzeichen}}" + f"{binaer.count('1') > 0:>{leerzeichen}}" + f"{binaer.count('1') % 2 == 1:>{leerzeichen}}"   
 </code> </code>
  • lehrkraefte/sbtsnr/python/logic.txt
  • Last modified: 2022/11/04 18:21
  • by Olaf Schnürer