-
19.12.2018, 00:40 #1
[Python] Zufallszahlen erraten
Hey Leute,
ich benötige mal ein wenig Hilfe.
Ich bin derzeit in einer Weiterbildung wo wir Python lernen.
Allerdings haben die meisten schon Vorkenntnisse und ich hänge als Neuling ziemlich hinterher, entsprechend ist es schwierig für mich, den Anfang zu finden.
Nun soll ich jedenfalls etwas schreiben das eine Zahl zwischen 0 und 100 Random ausgesucht wird und man diese erraten muss. Entsprechend gibt er aus, ob man zu groß oder zu klein is, bis man die richtige Antwort hat.
Vllt kann mir da der ein oder andere ein wenig helfen.
Ich weiß nämlich nicht wo ich anfangen soll, ich weiß zwar das ich mit Loops arbeiten muss und eventuell Functions, but idk....
Falls sich da jemand finden lässt, wäre ich tausendfach Dankbar.
Was anderes kann ich auf die schnelle nicht bieten, da es derzeit nicht so locker sitzt..(Weihnachten halt).
Danke euch für eure Aufmerksamkeit.
Greetz
-
19.12.2018, 09:01 #2
- Registriert seit
- 06.11.2011
- Beiträge
- 418
Thanked 686 Times in 246 PostsAW: [Python] Help
Habe selbst vor Kurzem erst Python gelernt, weil ich es für meine Bachelor-Arbeit benötige. Habe mich früher davor gescheut, weil ich geglaubt habe es eh nie zu brauchen. Beherrsche inzwischen so viele Programmiersprachen, dass das eigentlich auch stimmt, aber schaden tut es mir ja jetzt auch nicht. Jede Programmiersprache hat seine Vorteile und manche Dinge lassen sich in Python sehr viel schneller und einfacher realisieren als in anderen Sprachen, insbesondere wenn es um Maschinelles Lernen geht. Python ist auch sehr beliebt wegen der großen Auswahl an Bibliotheken, u. a. NumPy. Was Python auch ausmacht ist die einfache Syntax und genau deshalb ist es auch so einfach zu erlernen (auch für jemanden, der wenig bis keine Erfahrung hat). Habe als erfahrener Programmierer nur einen Tag gebraucht, um alle Grundlagen sowie syntaktischen Zucker (sagt man so) zu erlernen, und einen Zweiten, um mich in die wichtigsten Bibliotheken einzuarbeiten. Aber auch ein Laie sollte in ein bis zwei Wochen fit sein was das Thema Python angeht.
So viel erstmal zu Python...
Das sollte nie eine Ausrede sein. Meiner Meinung nach gibt es hier kein Hinterherhängen, weil du dich nicht messen sollst, sondern es für dich selbst tust. Tutorials, die am Anfang, den du ja nicht findest , ansetzen, sollte es genug geben. Die Meisten setzen sogar genau da an.
- Zufallszahl generieren und in einer Variable speichern (https://pythonspot.com/zufallszahlen/).
- Eingabe einlesen und in einer Variable speichern (https://www.python-kurs.eu/python3_eingabe.php).
- Einfache Abfrage, ob die eingelesene Zahl kleiner, gleich oder größer der generierten Zahl ist und die entsprechende Ausgabe machen.
Da brauchst du weder Loops noch Funktionen und dauert auch keine zwei Minuten.
Nicht persönlich nehmen, aber dein Ansatz zeigt mir, dass du dich noch gar nicht damit auseinandergesetzt hast. Wenn du einfach nichts tust, dann wird dir die wahrscheinlich einfachste Programmiersprache auch weiterhin schwer fallen zu erlernen.
Ich könnte dir auch einfach den fertigen Code geben, aber das ist nicht Sinn und Zweck (wolltest du jetzt wahrscheinlich nicht hören, aber so ist).
-
The Following 3 Users Say Thank You to Flav For This Useful Post:
-
19.12.2018, 16:52 #3
AW: [Python] Help
Danke.
Naja ne Lösung wollte ich nicht und ausreden habe ich ebenfalls nicht.
Ich bin einfach nur leicht überfordert, weil ich von Tag zu Tag viel neues Lerne und daher nicht weiß, wo ich nun anfangen soll.
Normalerweise natürlich mit dem Zufalls generieren, Input etc. damit man etwas eingibt, worauf dann natürlich der Work etc. kommt, nur wir hatten das erst vor paar Tagen, dass dies mit schleifen und Funktionen gelöst wurde, nur genau dies macht es für mich kompliziert.
Daher auch die Frage, wie der Ansatz nun wäre.
Ich will das schon selber lösen, keine sorge, nur ich hatte auf einen oder generelle Tipps gehofft, mehr eigentlich auch nicht.
Greetz
-
19.12.2018, 17:33 #4
AW: [Python] Help
Hier wäre die kommentierte Lösung:
import random;
#Bestimmen einer Zahl (Integer) zwischen 1 und 100
zahl = random.randint(1,100);
#Ausgabe der Zufallszahl, auskommentieren wenn Testen beendet.
print(zahl);
#Nutzer nach Zahl fragen und in Variable einspeichern.
eingabe = input("Bitte Zahl eingeben!");
#So lange Zahl nicht der Eingabe entspricht, Schleife wiederholen. Auch möglich: while(true) schleife mit nachfolgender if Abfrage, allerdings nicht empfehlenswert
#Achtung: Konvertierung der Variable nach Integer notwendig, falls etwas anderes als ein ganzzahliger Wert (Integer) eingegeben wird, kommt ein Fehler. Bei Bedarf vorher überprüfen (-> Methode: isinstance)
while zahl != int(eingabe):
#Wenn Zahl größer ist als Eingabe
if zahl > int(eingabe):
print("Zahl zu klein");
else:
#Wenn Zahl kleiner als Eingabe
print("Zahl zu groß");
#Aufforderung zur erneuten Eingabe der Zahl; Variable wird nach Eingabe überschrieben
eingabe = input("Bitte neue Zahl eingeben!");
#Sobald die Schleife verlassen wird (also richtiger Wert geraten wurde), "Erfolgreich!" ausgeben.
print("Erfolgreich!");
Hier ist der Code, eine einzelne Erklärung wäre mir nun zu aufwändig gewesen. Ich hoffe die Kommentare erklären dir ganz gut wieso und weshalb ich etwas gemacht habe. Falls du noch Fragen hast, immer her damit :-)
Eventuell hilft dir auch ein Cheat-Sheet wie dieser um einen groben Überblich zu bekommen: https://perso.limsi.fr/pointal/_medi...n3-english.pdfGeändert von rVs14 (19.12.2018 um 17:49 Uhr)
-
-
19.12.2018, 21:58 #5
AW: [Python] Help
Ich danke euch.
Mein Aktueller Stand: Geschafft ...
Hab mir natürlich Hilfe in Google gesucht und geschaut was mir geschrieben in Foren geantwortet wurde und mal geschaut wie deren Vorgehensweise war und an manchen ein beispiel (aber nicht abgeschrieben) genommen.
Mittlerweile sieht es bei mir so aus (Kann nur nicht sagen, ob alles Ordnungsgemäß ist, aber es funktioniert und habe dafür etwas über ne Stunde gebraucht, da nebenbei noch gegooglet, Stream geschaut und Musik gehört habe:
Code:import random z = random.randint (0,100) print(z) eingabe = input("Bitte gebe eine Zahl ein: ") z = int(z) try: val = int(eingabe) print("Super, nun wird gecheckt ob diese richtig ist...") except ValueError: print("Fehler, keine Zahl eingegeben, bitte versuche es erneut!") exit() while z != int(eingabe): if z > int(eingabe): print("Schade, diese ist zu klein!") else: print("Schade, diese ist zu Groß!") eingabe = input("Bitte versuche es erneut!") print("Volltreffer, du hast es Geschafft! :)");
Vielen Dank
GreetzGeändert von Iomega (19.12.2018 um 22:11 Uhr)
-
The Following User Says Thank You to Iomega For This Useful Post:
DMW007 (20.12.2018)
-
20.12.2018, 09:32 #6
- Registriert seit
- 06.11.2011
- Beiträge
- 418
Thanked 686 Times in 246 PostsAW: [Python] Help
Das mit dem Eingabe wiederholen habe ich in meiner Eile überlesen. Dann stimmt das natürlich, dass du dafür eine Schleife brauchst. Alternativ geht es auch mit einer Funktion (Stichwort Rekursion).
Zu deinem Ansatz:
Sieht jetzt ziemlich genau so aus wie das von rVs14, nur Variablen umbenannt sowie Kommentare und ein paar Leerzeilen entfernt. Hier wurde nur noch das try ergänzt und das auch nur bei der Eingabe außerhalb der Schleife (warum dann nicht bei beiden?). Deshalb wollte ich keinen Code posten.
Wie rVs14 schon kommentiert hatte, lässt sich die Eingabe mit isinstance überprüfen. Ist besser als try, was dann eine Exception auslöst.
-
20.12.2018, 15:27 #7
- Registriert seit
- 15.11.2011
- Beiträge
- 7.161
- Blog Entries
- 5
Thanked 9.268 Times in 3.117 PostsAW: [Python] Help
Wenn man nicht weiß wo anfangen empfiehlt es sich, die Aufgabe bzw. das Problem in kleinere Teile zu zerlegen. Hier könnte man z.B. eine Zufallszahl generieren, dann die Eingabe auslesen, beides miteinander vergleichen und schlussendlich mittels Schleifen das Erraten ermöglichen. So kommt man Schrittweise dem Ergebnis näher und hat funktionierende Zwischenstände.
Auch wenn es OT ist, aber: Eine Reizüberflutung mit Video-Streams, Musik & co sinnvoll ist, wenn man sich in ein komplett neues Thema einarbeitet, halte ich für nicht sinnvoll. Zumindest anfangs würde ich das lassen. Fällt dir dann sicher leichter, dich auf das Thema zu konzentrieren, wenn nicht ständig anderes Zeugs ablenkt. Hängt sicher auch vom jeweiligen Menschen ab. Aber da du ja Lernprobleme hast, würde ich darüber mal nachdenken. Programmieren ist nichts, was man nebenbei macht.
Zum Code selbst:
Code:z = int(z)
Die Umwandlung ist in dieser Zeile btw. unnötig, da randint() bereits einen Integer zurückliefert. Das kannst du in der Doku nachlesen oder auch selbst mit type() prüfen:
Code:>>> type(random.randint(0,100)) <class 'int'>
Code:val = int(eingabe)
Ansonsten solltest du auf konsistente Bezeichner achten, Denglisch ist nicht gut. Englisch macht imho am meisten Sinn. Das mag vielleicht pingelig klingen, ist es bei deinen 20 Zeilen auch. Aber da du ja was lernen willst (evtl. sogar im Bereich Softwareentwicklung) weise ich trotzdem mal darauf hin. Ich halte es für sinnvoll, sich diverse schlechte Praktiken gar nicht erst anzugewöhnen.
-
-
20.12.2018, 20:56 #8
AW: [Python] Help
Mit der schleife war ich soweit zufrieden, ob es jetzte korrekt ist kann ich in nicht einmal 1 Woche lernen, nicht wirklich sagen.
Selbst der Dozent meinte, dass man als Frischling, sich nicht so viel merken kann, wie wir Tag täglich neues Lernen, ohne in jeglicher Hinsicht Hilfe oder durcheinander zu kommen.
Jedenfalls kann ich versichern, dass ich es selber geschrieben habe, sonst bringt es mir ja nichts.
isinstance hatten wir bisher noch nicht, daher konnte ich nur die Standard Methoden anwenden, erst mit der Zeit wird es wichtig, alles Korrekt zu schreiben, nur da wir noch Anfänger sind und es darum geht es zu verstehen, ist es so Ok.
Entsprechend ist es logisch das es ein wenig gleich aussieht.
Danke erstmal für deine Ausführliche Hilfe.
Ja, das wurde uns genauso auch Empfohlen, allerdings habe ich noch Schwierigkeiten mit dem zerlegen und daher hatte ich auch nach einem Tipp gefragt.
Der Rest ist natürlich Korrekt.
Da haste recht, gestern hatte es mir einfach nur geholfen, da es im Unterricht sehr ruhig ist, zudem ich ja die Webentwicklung schon hinter mir habe und recht gut damit klar gekommen bin, werde ich beim Programmieren bleiben.
Nur da ich noch Ruby, Javascript lerne, ist es natürlich nicht nur nebensächlich .
Ich hoffe und erwarte das es irgendwie schaffe, so wie die Webentwicklung .
z = int(z) musste ich nur nutzen, weil "ohne" hat mir die cmd leider einen Fehler ausgegeben, dass es halt kein integer ist, wodurch ich damit dann gearbeitet habe.
Normalerweise hätte man es auch direkt in der Eingabe einfügen können. Habe nämlich kp warum er es in der Zeile 2 nicht für den gesamten Code angenommen hat.
Oh ok danke, dass ist mir nicht aufgefallen, war froh das es überhaupt geht xD...
Ok super, danke für deine Tipps, werde versuchen diese auch direkt umzusetzen, vor allem das in "Englisch" schreiben, wird ja nur eine kleine Umgewöhnung .
Jedenfalls Danke ich vielmals .
GreetzGeändert von Iomega (20.12.2018 um 22:22 Uhr)
Ähnliche Themen
-
Python, Literaturempfehlungen zum Einstieg?
Von Equilibrum im Forum AndereAntworten: 2Letzter Beitrag: 13.06.2017, 16:39 -
Typisierung von C# und Python
Von DotNet im Forum .NetAntworten: 3Letzter Beitrag: 12.06.2017, 15:03 -
Suche jemanden der mir eine .NET Anwendung zu Python oder JS (Nodejs) umschreibt
Von soulreafer im Forum SkriptsprachenAntworten: 4Letzter Beitrag: 27.11.2014, 22:36 -
Google Streetview Spiel Ort erraten
Von xOneDirectionx im Forum Internet und TechnikAntworten: 1Letzter Beitrag: 08.06.2014, 23:30 -
Wieso sind Pseudozufallszahlen und richtige Zufallszahlen unterschiedlich?
Von Peter90 im Forum Internet und TechnikAntworten: 1Letzter Beitrag: 08.02.2014, 18:47
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.