Hilfe bei eine programm

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
abdou
User
Beiträge: 1
Registriert: Mittwoch 29. Juni 2016, 17:42

Code: Alles auswählen

# Zufall spiel

import random
random.seed()
# zufall defeniert 1 bis 5"

a = random.randint(1,5)
b = random.randint(1,5)
c = a+b
print ("Der computer wählt eine zufall zahl von 1 bis 10")
print ("Und du sollst raten welche es ist")
print ("Du hast 5 versuche")
print ("Bitte eine Zahl eingeben")

for i in range(5):
    z = input()
    zahl = int(z)
    
    if zahl == c:
       print(" Deine zahl ist richtig")
       break
    
    else: zahl != c , print("versuche nochmal")
   
    
print ("Zufal zahl ist: ",c)         

if zahl == c:
    print("Du hast gewonnen")
else:  print(" Du hast verloren")

Hallo leute bin neue hier und auch un python gerade angefangen python zu lernen hoffe komme ich weiter und werde gut mal schauen:

so zu meine sache ich möchte in meine programm zwei sachen bauen und zwar

wenn ich 2 nummer zu hoch oder 2 nummer zu klein als c den zufall zahl möchte ich das er mir sagt warm ,und wen ich 1 nummer zu hoch oder zu klein als c den zufall zahl das er mir wärme schreibt als hilfe tip für den spieke wie baue ich das am besten
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

@abdou: Dein computer wählt aber eine Zahl zwischen 2 und 10 und mit 6 hat man die größten Gewinnchancen. Die Einrückung sollte immer 4 Leerzeichen sein und nicht mal 3 und mal 4. Nach : sollte immer eine neue Zeile anfangen (außer bei dicts und lambdas). Wo ist der Sinn, beim ersten "else" ein Tupel zu erzeugen, das nicht verwendet wird?

Wo ist Dein Problem, die richtige Bedingung für Deine Ausgaben zu finden?
Pygoscelis papua
User
Beiträge: 206
Registriert: Freitag 13. März 2015, 18:36

Code: Alles auswählen

if abs(c-zahl) <= 2:
    print('warm')
elseif abs(c-zahl) <= 1:
    print('noch wärmer')
import this
hidden python features

JAVA = Just Another Vulnerability Announcement :D
BlackJack

@abdou: Der `seed()`-Aufruf ist unnötig, den solltest Du raus nehmen.
Benutzeravatar
Dirki
User
Beiträge: 69
Registriert: Donnerstag 23. Juni 2016, 16:11

BlackJack hat geschrieben:@abdou: Der `seed()`-Aufruf ist unnötig, den solltest Du raus nehmen.
Hallo,

mal für einen Neuling...
Das Codebeispiel kommt so ähnlich in dem Buch "Einstieg in Python" vor.
Da ist das genau so beschrieben mit dem seed.
Kannst du vielleicht erklären, warum das unnötig ist, und was das evtl. eigentlich verursachen sollte?

Danke vielmals!

Gruß

Dirk
Benutzeravatar
snafu
User
Beiträge: 6908
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Pygoscelis papua hat geschrieben:

Code: Alles auswählen

if abs(c-zahl) <= 2:
    print('warm')
elseif abs(c-zahl) <= 1:
    print('noch wärmer')
Die Verwendung von abs() ist eine gute Idee. Es heißt allerdings in Python elif und nicht elseif. Außerdem würde ich hier mit == anstelle von <= arbeiten. Bei deinem Beispiel würde der elif-Zweig gar nicht erst betreten werden, da eine Zahl <= 1 immer auch <= 2 ist. Insofern guckt sich der Programmfluss den zweiten Zweig gar nicht mehr an, sobald der erste Zweig betreten wurde.
BlackJack

@Dirki: Der (Pseudo)Zufallsgenerator wird beim importieren des Moduls bereits mit einem passenden ”seed”-Wert versorgt. Im besten Fall ist der Aufruf einfach überflüssig, im schlechtesten Fall kann er sogar dafür sorgen das es weniger ”Zufall” gibt.
Benutzeravatar
snafu
User
Beiträge: 6908
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@Dirki:
Wir reden hier von Pseudozufall. Der Zufallszahlengenerator wird einmalig mit einem möglichst zufälligen Wert initialisiert (z.B. die aktuelle Uhrzeit). Von da an läuft das Erzeugen von Zufallszahlen nach einem festen Muster ab. Im Grunde funktioniert das ähnlich wie bei einem Zustandsautomaten. Mit random.seed() setzt du den Generator wieder auf einen Initialwert. Du kannst hier auch ein Argument mitgeben. Zum Testen ist das ganz nett, weil der weitere "zufällige" Ablauf dann immer auf diesem Argument beruht:

Code: Alles auswählen

import random

for _ in range(3):
    random.seed(123)
    for _ in range(3):
        print(random.randint(0, 10))
...aber ansonsten braucht man das eigentlich nicht.
Benutzeravatar
Dirki
User
Beiträge: 69
Registriert: Donnerstag 23. Juni 2016, 16:11

Ahh! Vielen Dank! Jetzt bin ich wieder etwas schlauer. Nicht mal Büchern kann man vertrauen. ;-)
BlackJack

Das man nicht glauben darf was man liest, kann man doch schon in den fünf Geboten in der Principia Discordia nachlesen. Das steht da schwarz auf weiss, also muss es stimmen. ;-)
Pygoscelis papua
User
Beiträge: 206
Registriert: Freitag 13. März 2015, 18:36

@snafu ja sorry ich hatte nicht so viel Zeit...

Code: Alles auswählen

if abs(c-zahl) == 2:
    print('warm')
elif abs(c-zahl) == 1:
    print('noch wärmer')
import this
hidden python features

JAVA = Just Another Vulnerability Announcement :D
Antworten