Faktorielle mit Fenster

Die Fakultät einer Zahl (n!) mit Ein-/Ausgabe per Fenster (tkinter).

def rechnen():
	zahl1=int(zahl.get())
	i=1
	ergebnis=1
	for i in range(zahl1):
		ergebnis = ergebnis * (i+1)
	erg.configure(text = str(ergebnis))

import tkinter as tk
from tkinter import *

root = Tk()

Label(root, justify=CENTER, text="Fakultät einer Zahl berechnen").pack()

zahl=Entry(root)
zahl.pack()

Button(root, text='Berechnen', width=25, command=rechnen).pack()

erg=Message(root, text="0", aspect=200)
erg.pack()

Button(root, text='Ende', width=25, command=root.destroy).pack()

root.mainloop()

Faktorielle

Das Berechnen der Faktoriellen einer Zahl (n!) in Python.

# import math

# Eingabe der Zahl
print("Fakultät einer Zahl berechnen!")
zahl=input("Zahl eingeben: ")

# Initialisierung der Variablen
i=1
erg=1

# Eingabe in eine Ganzzahl konvertieren
try:
	zahl=int(zahl)
	# Prüfung ob wirklich eine Zahl eingegeben wurde
except ValueError:
	print("Sie haben keine Ganzzahl eingegeben!")
else:
        # Schleife für die Berechnung
        for i in range(zahl):
                erg = erg * (i+1)

print(zahl,"! =",erg)

print("Ende")

Heron Wurzelziehen

Das Heron Näherungsverfahren zum Ziehen einer Quadratwurzel.

# wurzel.py

a = float(input("Zu berechnende Quadratwurzel: "))
x = float(input("Startwert x1: "))

# float bedeutet, dass mit Kommazahlen gerechnet werden soll!  

print ("Iteration  Näherungswert")
print ("_________________________")   

for i in range(1,6):
  x = 0.5*(x+a/x)
  print ('   ',i,'    ',x)

Sortieralgorytmus

Ein einfacher Straight Selection Sortieralgorytmus in Python.


# Array K mit beliebig vielen Zahlen zum Sortieren
# Variable n = Anzahl der Elemente
K = [9,8,7,6]
n = len(K)

print ("Aufgabe: ", K)

# Variable j für den Index im Array beginnend mit 0 (erstes Element) daher 1 abziehen
j = n - 1
print(j,n)

while j > 1:

    # erstes Element mit Index 0 
    maxi = 0
    # zweites Element mit Index 1
    i = 1
    while i <= j:
        if K[i] > K[maxi]:
            maxi = i
        i = i + 1
    print (maxi, i, j)
    hilf = K[j]
    K[j] = K[maxi]
    K[maxi] = hilf
    j = j - 1
    print (K)

print ("Ergebnis: ", K)

Python DNS

Um in Python eine DNS Abfrage zu stellen, gibt es das Modul dnspython https://www.dnspython.org/

Nun bin ich über ein kleines Problem gestolpert – Fehlermeldung: no module named dns

Es gibt eine Reihen von Problemlösungen im Netz, aber keine funktionierte bei mir. Bis ich auf den Umstand gestoßen bin, dass Linux Case-Sensitiv ist und Windows nicht. Und da ich die Meldung unter besagten Windows System bekommen habe, wurde ich fündig.

Mit pip show dnspython kann man sich die Infos zum Paket ansehen. Mit pip list eine Liste aller installierten Pakete.

Name: dnspython
Version: 2.7.0
Summary: DNS toolkit
Home-page: https://www.dnspython.org
Author:
Author-email: Bob Halley <halley@dnspython.org>
License: ISC
Location: C:\Users\FranzStaffel\AppData\Local\Programs\Python\Python312\Lib\site-packages
Requires:
Required-by:

Nun geschwind in den Ordner der Pakete gewechselt und was findet man da (dir):

11.12.2024  13:05    <DIR>          DNS
11.12.2024  13:05    <DIR>          dnspython-2.7.0.dist-info

Siehe da, durch die Installation des Modules DNS gibt es einen Ordner mit Großbuchstaben. Und da Windows nicht Case-Sensitiv ist, kopiert er bei der Installation von dnspython alles in den DNS Ordner.

Kurzerhand dnspython wieder deinstalliert mit pip deinstall dnspython

Den Ordner DNS manuell gelöscht (da ich das Modul DNS ohnehin nicht mehr benötige) und dnspython wieder installiert

11.12.2024  13:05    <DIR>          dns
11.12.2024  13:05    <DIR>          dnspython-2.7.0.dist-info

Jetzt funktionieren auch die Programme mit dem import dns. Alles eine Frage der Groß- und Kleinschreibung.

Das war die Ursache bei mir, vielleicht hilft es bei dem einen oder anderen, seinen Fehler zu lokalisieren.