Python :: Aufgabe #14

7 Lösungen Lösungen öffentlich

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:

vote_ok
von Dome (2100 Punkte) - 29.12.2012 um 16:43 Uhr
Quellcode ausblenden Python-Code
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
vote_ok
von nos (110 Punkte) - 29.11.2014 um 13:28 Uhr
Quellcode ausblenden Python-Code
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"
vote_ok
von ushy (470 Punkte) - 24.03.2015 um 01:33 Uhr
Quellcode ausblenden Python-Code
#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)
                
vote_ok
von kronstone (200 Punkte) - 01.05.2015 um 11:52 Uhr
Quellcode ausblenden Python-Code
"""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
1 Kommentar
vote_ok
von Nachbar (2820 Punkte) - 09.12.2016 um 23:04 Uhr
Quellcode ausblenden Python-Code
# -*- 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)
vote_ok
von PythonIT (240 Punkte) - 19.08.2017 um 20:04 Uhr
Quellcode ausblenden Python-Code
# 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.
vote_ok
von PythonLui (400 Punkte) - 08.04.2021 um 12:25 Uhr
Quellcode ausblenden Python-Code
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