Python :: Aufgabe #14
7 Lösungen

Zahlen erraten lassen.
Anfänger - Python
von zayc_
- 28.12.2012 um 14:08 Uhr
Programmiere ein Programm, welches eine vom User erdachte Zahl (Integer) in einem vom User angegebenen Bereich Erraten soll.
Konsolenausgabe:
Bitte Untergränze angeben: 0
Bitte Obergränze angeben: 100
Bitte geben sie nach jedem versuch R,G oder K an. je nachdem ob
R die Zahl richtig ist
G die gesuchte Zahl grösser ist
K die gesuchte Zahl kleiner ist
1. Versuch: 50.
k
2. Versuch: 25
g
3. Versuch: 37
g
4. versuch: 42
g
5. Versuch: 46
k
6. Versuch: 44
k
7. Versuch: 43
r
Die gesuchte Zahl war also die 43!
Lösungen:

import random untergrenze = int(input("Bitte Untergrenze angeben: ")) obergrenze = int(input("Bitte Obergrenze angeben: ")) erg = random.randint(untergrenze, obergrenze) print("Bitte geben sie nach jedem Versuch R, G, K an. Je nachdem ob,\n \ R die Zahl richtig ist \n \ G die gesuchte Zahl größer ist \n \ K die gesuchte Zahl kleiner ist") i = 1 while True: print(str(i) + ".Versuch: ") zahl = int(input()) if zahl > erg: print("k") elif zahl < erg: print("g") elif zahl == erg: print("r") print("Die gesuchte Zahl war also die " + str(erg)) break i += 1

minimum = int(raw_input("Bitte Untergrenze angeben: ")) maximum = int(raw_input("Bitte Obergrenze angeben: ")) print "Bitte geben sie nach jedem versuch R,G oder K an. je nachdem ob" print "R die Zahl richtig ist" print "G die gesuchte Zahl groesser ist" print "K die gesuchte Zahl kleiner ist" versuch_zaehler = 0 while True: versuch_zaehler += 1 mittelwert = (minimum+maximum)/2 print str(versuch_zaehler) + ". Versuch: "+str(mittelwert) tipp = raw_input() if tipp.upper() == "R": print "Die gesuchte Zahl ist also " + str(mittelwert) + "!" break elif tipp.upper() == "G": minimum = mittelwert + 1 elif tipp.upper() == "K": maximum = mittelwert - 1 else: print "Dieses Kommando kenne ich nicht"

#Zuffalszahlen import random random.seed #Grenzen definieren fehler_1=1 while fehler_1==1: try: u_grenze=int(input('Bitte geben sie die Untergrenze an: ')) fehler_1=0 except: print('Die Untergrenze muß eine Ganzzahl sein.') fehler_2=1 while fehler_2==1: try: o_grenze=int(input('Bitte geben sie die Obergrenze an: ')) fehler_2=0 except: print('Die Obergrenze muß eine Ganzzahl sein.') print('Bitte geben sie nach jedem Versuch r,g oder k ein.') print('r: Die Zahl ist richtig.') print('g: Die gesuchte Zahl ist grösser.') print('k: Die gesuchte Zahl ist kleiner.') print("################################## \n") #Wiederholt raten bis Zahl gefunden erraten=0 versuch=0 bisher=[] while erraten==0: guess=random.randint(u_grenze,o_grenze) versuch=versuch+1 #Prüfen ob Zahl bereits versucht while guess not in bisher: bisher.append(guess) print('Versuch: ',str(versuch).zfill(2),':',guess) antw=str(input('Ihre Antwort: ')) #Auswerten der user-Eingabe if antw=='r': print('Erraten in: ',str(versuch).zfill(2),' Versuchen.') erraten=1 elif antw=='k': o_grenze=guess elif antw=='g': u_grenze=guess #Ausnahme falls user falsch Antwortet else: print('Sie müssen den Versuch richtig bewerten.') bisher.remove(guess)

"""Programmiere ein Programm, welches eine vom User erdachte Zahl (Integer) in einem vom User angegebenen Bereich Erraten soll.""" print("Zahlenraten v1.0, kronstone\n\nDenken Sie an eine Zahl!") unten=int(input("Geben Sie die untere Grenze ein:")) oben=int(input("Geben Sie die obere Grenze ein:")) print("Geben Sie R,G,K oder X ein!\nR...richtige Zahl\nG...Zahl ist groesser\nK...Zahl ist kleiner\nX...Beenden") userint='\0' versuch=1 if (unten+1 < oben): while not((userint == 'R') or (userint == 'r') or (userint == 'X') or (userint == 'x')): out=round(oben-(oben-unten)/2) print(versuch, ". Versuch", out) versuch += 1 userint=input() if (userint == 'K') or (userint == 'k'): oben=out elif (userint == 'G') or (userint == 'g'): unten=out

# -*- coding: utf-8 -*- import random untergrenze = input("Bitte eine Untergrenze eingeben: ") obergrenze = input("Bitte eine Obergrenze eingeben: ") print "\nGib nach jedem Versuch entweder 'r' (richtig), 'g' (groesser)\ oder 'k' (kleiner) ein." a = [] zaehler = 1 while True: tip = random.randint(untergrenze, obergrenze) if tip not in a: print "\n" + str(zaehler) + ". Versuch: " + str(tip) y = raw_input("") if y == "r": print "\nDie richtige Zahl ist also: " + str(tip) True = False elif y == "g": untergrenze = tip zaehler = zaehler + 1 # Um Wiederholungen zu vermeiden a.append(tip) elif y == "k": obergrenze = tip zaehler = zaehler + 1 # Um Wiederholungen zu vermeiden a.append(tip)

# zahlenraten2.py untergrenze = int(input("Geben Sie die Untergrenze an: ")) obergrenze = int(input("Geben Sie die Obergrenze an: ")) print("""Denken Sie sich eine Zahl. Der Computer wird im Folgenden versuchen, diese zu erraten. Geben Sie \n\t'G' oder 'g' an, wenn die gesuchte Zahl größer ist\n\t'K' oder 'k', wenn sie kleiner ist oder \n\t'R' oder 'r', wenn sie richtig ist.""") versuche = 0 while True: raten = int((int(10 * (obergrenze + untergrenze) / 2) + 5)/10) antwort = input("Ist es die " + str(raten) + "? ") if antwort not in ["G","g","K","k","R","r"]: print("Bitte eine richtige Antwort eingeben") continue if antwort in ["G","g"]: if untergrenze + 1 == obergrenze or untergrenze == obergrenze: print("Das kann nicht sein, schummeln macht keinen Spaß!") continue untergrenze = raten versuche += 1 elif antwort in ["K","k"]: if untergrenze + 1 == obergrenze or untergrenze == obergrenze: print("Das kann nicht sein, schummeln macht keinen Spaß!") continue obergrenze = raten versuche += 1 elif antwort in ["R","r"]: break print("Der Computer hat deine Zahl in " + str(versuche) + " Versuch(en) erraten.

def unter_obergrenze(): while True: try: untergrenze = int(input("Bitte Untergrenze angeben: ")) obergrenze = int(input("Bitte Obergrenze angeben: ")) if untergrenze < obergrenze: break else: print("Die Untergrenze muss kleiner als die Obergrenze sein!!!") except: print("Bitte nur Ganze Zahlen eingeben!!!") def ausgabe_hinweise(): print("Bitte geben sie nach jedem versuch R,G oder K an. je nachdem ob\n" "R die Zahl richtig ist\n" "G die gesuchte Zahl grösser ist\n" "K die gesuchte Zahl kleiner ist\n\n") def versuch_eingeben(anzahl): while True: # Eingabe des Versuch und Überprüfung try: eingabe_versuch = int(input(f"{anzahl}. Versuch: ")) return eingabe_versuch except: print("Bitte nur Ganze Zahlen eingeben!!!") def hinweis_eingeben(): while True: # Eingabe Hinweis und Überprüfung eingabe_hinweis = input().lower() if (eingabe_hinweis.isalpha() and (eingabe_hinweis == "r" or eingabe_hinweis == "g" or eingabe_hinweis == "k")): return eingabe_hinweis else: print("Bitte nur R, G oder K eingeben!!!") def main(): unter_obergrenze() ausgabe_hinweise() anzahl_versuche = 0 while True: anzahl_versuche += 1 versuch = versuch_eingeben(anzahl_versuche) if hinweis_eingeben() == "r": print(f"Die gesuchte Zahl war also die {versuch}!") break if __name__ == '__main__': main()
Konsolenausgabe:
Bitte Untergrenze angeben: 0
Bitte Obergrenze angeben: 100
Bitte geben sie nach jedem versuch R,G oder K an. je nachdem ob
R die Zahl richtig ist
G die gesuchte Zahl grösser ist
K die gesuchte Zahl kleiner ist
1. Versuch: 50
g
2. Versuch: s
Bitte nur Ganze Zahlen eingeben!!!
2. Versuch: 60
55
Bitte nur R, G oder K eingeben!!!
k
3. Versuch: 30
r
Die gesuchte Zahl war also die 30