Moin, bin Lernender in der Schweiz. Lerne Informatik /Systemtechnik. Zu unser Ausbildung gehört nun seit neuestem auch Python. ich bin btw im 1 Lehrjahr, also noch nicht sehr erfahren. Ich kann nur sagen, wir machen schon an den Aufgaben, aber oft sind (meine) resultate halt falsch, und dann denke ich, "Nehmen wir doch gleich einen ganz neuen Code" anstelle an dem Falschen ewig lang rumzu arbeiten, bis er funktionsfähig ist.
An alle Schüler und Studenten mit Informatikproblemen
Hi Neu hier. Derzeit am Python lernen. (Abgebrochener Bauingenieur)
Irgendwo am Anfang des Threads hieß es das Python nicht an Unis nicht gelehrt wird. Dazu nur Folgendes, an unserer Uni gab es einen Nebenkurs: "Python für Bauingenieure."
An diesem habe ich teilgenommen. Arbeite zurzeit, zur übung an einem Programm in Python was aus Textdateien Wörter suchen soll und daraus systematisch die wörter davor und danach in verschiedene Textdateien schreiben soll. Welche dann auch später verwendet werden. Ziel des Ganzen u.a. Orte aus einem literarischen Text (Wobei hier je nach Kontext auch Wasserfall oder Baum) ein Wort sein kann. Herausziehen und letztendlich in eine grobe Grafik eintragen. Zurzeit versuche ich aus dem Handbuch (Python von Peter Kaiser, Johannes Ernesti Das umfassende Handbuch - Aktuell zu Python 2.5) ,
auch wenn das wohl veraltet ist, das Kapitel/Modul threading zu nutzen. Hierbei wurde mir aber gesagt das Threading in Python eher ungeeignet ist. Stimmt das? Wenn ja warum? Was ist besser geeignet? (Ich wollte je Buch was durchsucht wird, einen eigenen Thread starten.)
PS: sry wegen dem Offtopic. Es ging mir eigentlich nur um die Aussage das in Unis sehr wohl Python benutzt wird.
Im Kurs damals Python 3.7 genutzt
Jetzt 3.9
Irgendwo am Anfang des Threads hieß es das Python nicht an Unis nicht gelehrt wird. Dazu nur Folgendes, an unserer Uni gab es einen Nebenkurs: "Python für Bauingenieure."
An diesem habe ich teilgenommen. Arbeite zurzeit, zur übung an einem Programm in Python was aus Textdateien Wörter suchen soll und daraus systematisch die wörter davor und danach in verschiedene Textdateien schreiben soll. Welche dann auch später verwendet werden. Ziel des Ganzen u.a. Orte aus einem literarischen Text (Wobei hier je nach Kontext auch Wasserfall oder Baum) ein Wort sein kann. Herausziehen und letztendlich in eine grobe Grafik eintragen. Zurzeit versuche ich aus dem Handbuch (Python von Peter Kaiser, Johannes Ernesti Das umfassende Handbuch - Aktuell zu Python 2.5) ,
auch wenn das wohl veraltet ist, das Kapitel/Modul threading zu nutzen. Hierbei wurde mir aber gesagt das Threading in Python eher ungeeignet ist. Stimmt das? Wenn ja warum? Was ist besser geeignet? (Ich wollte je Buch was durchsucht wird, einen eigenen Thread starten.)
PS: sry wegen dem Offtopic. Es ging mir eigentlich nur um die Aussage das in Unis sehr wohl Python benutzt wird.
Im Kurs damals Python 3.7 genutzt
Jetzt 3.9
- __blackjack__
- User
- Beiträge: 13919
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@hororizon: Ein Buch zu Python 2.5 sollte man echt nicht mehr verwenden. Und auch bei neueren Ausgaben von diesem Buch, solltest Du etwas vorsichtig sein, denn das behandelt zum Beispiel die 3. Ausgabe von dem Buch, die bereits für Python 3 ist, zum Thema „Threads“ erst mal in einem eigenen Kapitel das `_thread`-Modul, Das Modul hiess in Python 2 noch `thread` und dort wurde schon seit Ewigkeiten in der Dokumentation auf das `threading`-Modul verwiesen. Der führende Unterstrich kennzeichnet das in Python 3 dann auch als Implementierungsdetail, welches man nicht verwenden sollte. Ich vermute der Verlag wollte die Seiten einfach ungern wegwerfen, was aber IMHO eine recht fragwürdige Entscheidung ist/war. Also nicht das `thread`/`_thread`-Modul verwenden, auch wenn das in einem Buch beschrieben wird!
In CPython gibt ein „global interpreter lock“ (GIL), welches dafür sorgt, dass immer nur ein Thead zur gleichen Zeit Python-Bytecode ausführen kann. Wenn ein Thread in einem blockierenden Systemaufruf steckt, oder Code einer in C geschriebenen Erweiterung ausgeführt wird, die das GIL freigibt, kann aber durchaus auch Code parallel ausgeführt werden.
Wenn man tatsächliche Paralellität braucht, dann geht das mit mehreren Prozessen. Dafür gibt es das `multiprozessing`-Modul. Ich würde aber erst schauen ob man mit `concurrent.futures` etwas anfangen kann. Die API ist auf höherer Ebene und man kann sich da zwischen Threads und Prozessen entscheiden.
In CPython gibt ein „global interpreter lock“ (GIL), welches dafür sorgt, dass immer nur ein Thead zur gleichen Zeit Python-Bytecode ausführen kann. Wenn ein Thread in einem blockierenden Systemaufruf steckt, oder Code einer in C geschriebenen Erweiterung ausgeführt wird, die das GIL freigibt, kann aber durchaus auch Code parallel ausgeführt werden.
Wenn man tatsächliche Paralellität braucht, dann geht das mit mehreren Prozessen. Dafür gibt es das `multiprozessing`-Modul. Ich würde aber erst schauen ob man mit `concurrent.futures` etwas anfangen kann. Die API ist auf höherer Ebene und man kann sich da zwischen Threads und Prozessen entscheiden.
“I am Dyslexic of Borg, Your Ass will be Laminated” — unknown
-
- User
- Beiträge: 23
- Registriert: Freitag 18. Juni 2021, 12:30
Grüzi, ich bin Lehrender in D, darf ich mal fragen, mit was ihr arbeitet? Ich habe gesehen, dass die Schweiz und Österreich in vielen Dingen schon sehr weit sind, es gibt gutes Onlinematerial, manchmal auch echt viel! Gerne PM, GrüßeEros hat geschrieben: ↑Montag 15. Februar 2021, 11:44Moin, bin Lernender in der Schweiz. Lerne Informatik /Systemtechnik. Zu unser Ausbildung gehört nun seit neuestem auch Python. ich bin btw im 1 Lehrjahr, also noch nicht sehr erfahren. Ich kann nur sagen, wir machen schon an den Aufgaben, aber oft sind (meine) resultate halt falsch, und dann denke ich, "Nehmen wir doch gleich einen ganz neuen Code" anstelle an dem Falschen ewig lang rumzu arbeiten, bis er funktionsfähig ist.
Guten Tag, ich habe eine Aufgabe bekommen, aber alleine leider schaffe ich nicht. Kann mir jemand Helfen bitte.
Erstellen Sie eine Funktion, die eine ganze Zahl als Eingabeparameter bekommt und feststellt, ob
die Zahl kleiner Null ist (Rückgabewert 0)
einstellig ist (Rückgabewert 1)
zweistellig ist (Rückgabewert 2)
dreistellig ist (Rückgabewerte 3)
vierstellig und größer ist (Rückgabewerte 99)
Verwenden Sie keine Schleife in Ihrem Programm und nur eine return-Anweisung.
def klassen(zahl):
return n
Erstellen Sie eine Funktion, die eine ganze Zahl als Eingabeparameter bekommt und feststellt, ob
die Zahl kleiner Null ist (Rückgabewert 0)
einstellig ist (Rückgabewert 1)
zweistellig ist (Rückgabewert 2)
dreistellig ist (Rückgabewerte 3)
vierstellig und größer ist (Rückgabewerte 99)
Verwenden Sie keine Schleife in Ihrem Programm und nur eine return-Anweisung.
def klassen(zahl):
return n
@Vadym:
Und lies am besten nochmal den ersten Beitrag hier im Thread. 
Und wenn du deine Frage in einem eigenen Thread stellst, dann schreibe bitte auch deinen Ansatz und wo konkret du Probleme mit der Aufgabenstellung hast.
Code: Alles auswählen
λ» let
| klassen n
| | n < 0 = 0
| | n < 10 = 1
| | n < 100 = 2
| | n < 1000 = 3
| | otherwise = return 99 !! 0
|
klassen :: (Ord a, Num a, Num p) => a -> p
λ» klassen 42
2
λ» klassen (-123)
0
λ» klassen 1337
99

Und wenn du deine Frage in einem eigenen Thread stellst, dann schreibe bitte auch deinen Ansatz und wo konkret du Probleme mit der Aufgabenstellung hast.
Neue Aufgabe .
Erstellen eine Funktion ,die aus einer Zahl y mit der angegebenen Iterationsformel solange einenneuen Wert x berechnet,bis sich das x nur noch in der z-ten Nachkommastelle ändert.
x《n+1》=((3×x^4《n》)+y)/4×x^3《n》
Eingabeparameter:
y Zahl zwischen 12 und 24(nachprüfen;bei falschem Wert von y -1 zurückgeben)
x0 Startwertfür die Iteration von x
z Anzahl Nachkommastellen für die Genauigkeit
Aus numerischen Gründen ist während der Iteration nicht zu runden.
def my_rt(y,x0,z)
........
...........
return xn1
#Test
x=my_rt(12,1,10)
print(x)
Antwort:1.8.........

Erstellen eine Funktion ,die aus einer Zahl y mit der angegebenen Iterationsformel solange einenneuen Wert x berechnet,bis sich das x nur noch in der z-ten Nachkommastelle ändert.
x《n+1》=((3×x^4《n》)+y)/4×x^3《n》
Eingabeparameter:
y Zahl zwischen 12 und 24(nachprüfen;bei falschem Wert von y -1 zurückgeben)
x0 Startwertfür die Iteration von x
z Anzahl Nachkommastellen für die Genauigkeit
Aus numerischen Gründen ist während der Iteration nicht zu runden.
def my_rt(y,x0,z)
........
...........
return xn1
#Test
x=my_rt(12,1,10)
print(x)
Antwort:1.8.........
Die Anforderungen sind ja nicht so toll gestellt, um eine halbwegs elegante Lösung zu erhalten. Wie hast du es denn gelöst? Ich wollte mehrfach verschachtelte if-else-Anweisungen vermeiden und habe daher den Zehnerlogarithmus bemüht, allerdings auch nur mit Verrenkungen:Vadym hat geschrieben: ↑Sonntag 20. Juni 2021, 14:21o
Erstellen Sie eine Funktion, die eine ganze Zahl als Eingabeparameter bekommt und feststellt, ob
die Zahl kleiner Null ist (Rückgabewert 0)
einstellig ist (Rückgabewert 1)
zweistellig ist (Rückgabewert 2)
dreistellig ist (Rückgabewerte 3)
vierstellig und größer ist (Rückgabewerte 99)
Verwenden Sie keine Schleife in Ihrem Programm und nur eine return-Anweisung.
Code: Alles auswählen
from math import log10
def analyze(n):
return int(log10(n) + 1) if 0 < n < 1000 else int(n == 0) or (0, 99)[n >= 1000]
Und wie das so ist, fällt einem kurz nach dem Posten noch etwas ein:
Code: Alles auswählen
def analyze(n):
return (n >= 0) + (n >= 10) + (n >= 100) if n < 1000 else 99
@snafu: warum der Symmetriebruch?
Code: Alles auswählen
def analyze(n):
return (n >= 0) + (n >= 10) + (n >= 100) + 96 * (n >= 1000)
@Vadym: bitte fange einen eigenen Thread an, und stelle dort eine konkrete Frage, an welcher Stelle Du mit Deinen Hausaufgaben nicht weiter kommst. Und falls Du snafus Lösung klauen und als Deine eigene ausgeben solltest, mußt Du wenigstens erklären können, warum sie funktioniert.