Python :: Aufgabe #15 :: Lösung #4

7 Lösungen Lösungen öffentlich
#15

Zahlen Raten - Fortgeschrittener

Fortgeschrittener - Python von zayc_ - 28.12.2012 um 14:00 Uhr
Das zu programmierende Programm soll eine Zufallszahl (integer, der User soll nach dem Bereich gefragt werden) generieren.
Der User soll diese erraten. Nach jedem Versuch soll der User darüber informiert werden, der wie vielte Versuch es war, ob er richtig oder falsch liegt, und wenn er falsch liegt ob die gesuchte Zahl grösser oder kleiner als die vom User eingegebene ist.

Zusatz für Fortgeschrittene:
Bei Falscheingaben (Buchstaben, Sonderzeichen, etz.) soll der User darüber informiert werden.
Bei den Versuchen >10 soll eine führende Null mit ausgegeben werden (also statt 1,2,3 soll 01, 02 ,03 ausgegeben werden.)
Bei der wiederholten Eingabe einer Zahl soll der User darüber informiert werden.
Der User soll den Bereich in dem die Zufallszahl liegen soll, selbst definieren.
Der User soll informiert werden, wenn sein Versuch ausserhalb des definierten Bereichs liegt.



Beispiel einer Konsolenausgabe:

Konsolenausgabe:


Bitte die Untergränze wählen: 20
Bitte die Obergränze wählen: 60

Bitte erraten sie die gesuchte Zahl, sie befindet sich zwischen 20 und 60.

Ihr 01. Versuch: 5
Die eingegebene Zahl befindet sich ausserhalb des von ihnen definierten Bereich.

Ihr 02. Versuch: halloooo
Bitte nur Z A H L E N eingeben.

Ihr 03. Versuch: 55
Die gesuchte Zahl ist kleiner.

Ihr 04. Versuch: 25
Die gesuchte Zahl ist grösser.

Ihr 05. Versuch: 55
Mit dieser Zahl haben Sie es schon einmal versucht!

Ihr 06. Versuch: 40
Glückwunsch die von Ihnen eingegebene Zahl ( 40 ) stimmt mit der gesuchten Zahl überein.
#4
vote_ok
von felixTheC (1200 Punkte) - 14.06.2017 um 22:17 Uhr
Quellcode ausblenden Python-Code

#! /usr/env/python3
from random import randint

#the language function and so on is only a feature because I think it is a nice idea :)
def language(lang):
    """
    This function needs a string as paramter and return a dictionary, 
    avalaibles are only english and german specially created for this game
    """
    eng = {'minimum':'Please set your minimum: ',
           'maximum':'Please set your maximum: ',
           'start': 'Please guess the number between %s and %s',
           'try':'Your %d. try: ', 'fail':'The game is called guess the NUMBER!!!!',
           'out':'Your number is out of the defined range',
           'again':'You had tryed this number bevor',
           'greater':'The number we are looking for is smaller', 'low':'The number we are looking for is greater',
           'win':'Congratulations the number you typed in ( %s ) was the number we are looking for'}
    deu = {'minimum':'Bitte wähle deine Untergrenze: ',
           'maximum':'Bitte wähle deine Obergrenze: ',
           'start': 'Bitte errate die Zahl zwischen %s und %s',
           'try':'Ihr %d. Versuch: ', 'fail':'Das Spiel heißt rate die NUMMER!!!!',
           'out':'Die eingegebene Zahl befindet sich ausserhalb des von ihnen definierten Bereich',
           'again':'Mit dieser Zahl haben Sie es bereits versucht',
           'greater':'Die gesuchte Zahl ist kleiner', 'low':'Die gesuchte Zahl ist größer',
           'win':'Glückwunsch die von Ihnen eingegeben Zahl ( %s ) stimmt mit der gesuchten Zahl überein'}
    if lang == 'english':
        return eng
    elif lang == 'deutsch':
        return deu


def chooseLang():
    """
    ask the user for a language and check the input if success it will return a language dictionary 
    """
    langDic = None
    languages = ['english', 'deutsch']
    lang = input('Please choose your language/Bitte wähle deine Sprache, english/deutsch: ')
    if lang in languages:
        langDic = language(lang)
        return langDic
    else:
        return chooseLang()


def checkNumbers(number, guess):
    """
    needs the number we are looking for and the guessing number as parameters
    checks the number with the guess, if the guess is not an int it will return a failure
    """
    try:
        if int(guess) > number:
            return 'greater'
        elif int(guess) < number:
            return 'low'
        elif int(guess) == number:
            return 'win'
    except:
        return 'fail'


def main():
    """
    the main function
    """
    langDic = chooseLang()
    guesses = 1
    guestNums = []
    
    #setting up the minimum and the maximum
    minimum = input(langDic['minimum'])
    maximum = input(langDic['maximum'])
    
    #creating the number which the user must guess
    theNumber = randint(int(minimum), int(maximum))
    
    print(langDic['start']%(minimum, maximum))
    
    while True:
        guess = input(langDic['try']%(guesses))
        guesses += 1
        check = checkNumbers(theNumber,guess)
        if guess in guestNums:
            print(langDic['again'])
        elif int(guess) < int(minimum) or int(guess) > int(maximum):
            print(langDic['out'])      
        else:
            guestNums.append(guess)
            if check == 'win':
                print(langDic[check]%(guess))
                break
            else:
                print(langDic[check])
                
            
            
if __name__ == '__main__':
    main()

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben