If schleife in Python

Gast #4471740
Hi,

ich bin gerade etwas verwirrt. Ich versuche gerade eine Zahl aus der 
Texteingabe in eine kleine if schleife einzubauen. Nur gelinkt es mir 
nicht. Python beendet ohne Fehlermeldung. Wie mache ich das denn 
richtig?
1
print('gebe die Zahl 1 ein')
2
zahlinput= input()
3
print (zahlinput)
4

5

6
if zahlinput == 1:
7
    print('Das war die 1')
8

9
if zahlinput == 2:
10
    print('Und das die 2')
Gast #4471827
Marc schrieb:
> Python beendet ohne Fehlermeldung.
Ist ja auch kein Fehler aufgetreten.

Marc schrieb:
> Wie mache ich das denn richtig?
Dir erstmal ein Buch besorgen, z.B.: 
http://www.amazon.de/Python-umfassende-Sprachgrundlagen-Objektorientierung-Modularisierung/dp/3836236338/ref=sr_1_1?ie=UTF8&qid=1455654879&sr=8-1&keywords=Python

Marc schrieb:
> if schleife
Woher hast du diese Begrifflichkeit? So etwas gibt es nicht!

Marc schrieb:
> print('gebe die Zahl 1 ein')
> zahlinput= input()
> print (zahlinput)
Das machst du zu:
1
zahlinput = input('Gib die Zahl 1 ein: ')

Marc schrieb:
> if zahlinput == 1:
>     print('Das war die 1')
>
> if zahlinput == 2:
>     print('Und das die 2')
Du hast jetzt 2 möglichkeiten: String- oder Integervergleich:
1
# Stringvergleich:
2
if zahlinput == '1':
3
    print('Das war die 1')
4

5
if zahlinput == '2':
6
    print('Und das die 2')
7

8
# oder Intergervergleich
9
if int(zahlinput) == 1:
10
    print('Das war die 1')
11

12
if int(zahlinput) == 2:
13
    print('Und das die 2')

Und von einer Schleife sehe ich da nichts...

Halbwegs richtig sieht dein Script so aus:
1
#!/usr/bin/env python3
2

3
def main():
4
    zahlinput = input('Gib die Zahl 1 ein: ')
5
    if zahlinput == '1':
6
        print('Das war die 1')
7

8
    elif zahlinput == '2':
9
        print('Und das die 2')
10

11
    else:
12
        print('Die Eingabe war: %s' % (zahlinput))
13
  
14
    print('Ende von main. Script wird beendet.')
15

16

17
if __name__ == '__main__':
18
    main()
Ob man eine main-Funktion definiert ist geschmackssache. Und über die 
Formatformatierung mit %s im print kann man auch streiten.
Gast #4471899
>ich bin gerade etwas verwirrt. Ich versuche gerade eine Zahl aus der
>Texteingabe in eine kleine if schleife einzubauen. Nur gelinkt es mir
>nicht. Python beendet ohne Fehlermeldung. Wie mache ich das denn
>richtig?

if-Schleifen gibt es nicht ;-)
Wenn schon, dann if-Treppen .. ok, ja
1
Daniel@dellPC /home/Daniel
2
$ cat > test.py <<EOF
3
> print('gebe die Zahl 1 ein')
4
> zahlinput= input()
5
> print (zahlinput)
6
>
7
>
8
> if zahlinput == 1:
9
>     print('Das war die 1')
10
>
11
> if zahlinput == 2:
12
>     print('Und das die 2')
13
> EOF
14

15
Daniel@dellPC /home/Daniel
16
$ chmod 755 test.py
17

18
Daniel@dellPC /home/Daniel
19
$ python ./test.py
20
gebe die Zahl 1 ein
21
1
22
1
23
Das war die 1

dein Code ist ok.
Das Problem liegt woanders.
Wie rufst das Program auf?
Keine shebang Zeile?

Entgegen den Postings oben, liefert input() keinen string zurück.
Das tut raw_input()
1
>>> type(input())
2
1
3
<type 'int'>
4
>>> type(raw_input())
5
1
6
<type 'str'>

1
help(input)
2
Help on built-in function input in module __builtin__:
3

4
input(...)
5
    input([prompt]) -> value
6

7
    Equivalent to eval(raw_input(prompt)).
1
Help on built-in function raw_input in module __builtin__:
2

3
raw_input(...)
4
    raw_input([prompt]) -> string
5

6
    Read a string from standard input.  The trailing newline is stripped.
7
    If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError.
8
    On Unix, GNU readline is used if enabled.  The prompt string, if given,
9
    is printed without a trailing newline before reading.
10
(END)
Gast #4472042
root schrieb:
> Entgegen den Postings oben, liefert input() keinen string zurück.
Da der TO Input benutzt, und der vergleich mit einem int nicht 
funktioniert, würde ich diese aussage nochmal überdenken... ;)

Lukas K. schrieb:
> Kommt drauf an. In python 3 gibt input() nen string zurück, wie
> raw_input() in 2.7.
So siehts nämlich aus!
Gast #4472217
Kaj schrieb:
> root schrieb:
>> Entgegen den Postings oben, liefert input() keinen string zurück.
> Da der TO Input benutzt, und der vergleich mit einem int nicht
> funktioniert, würde ich diese aussage nochmal überdenken... ;)
>
> Lukas K. schrieb:
>> Kommt drauf an. In python 3 gibt input() nen string zurück, wie
>> raw_input() in 2.7.
> So siehts nämlich aus!

ich hatte die Möglichkeit der Inkompatibilität in Erwägung gezogen,
hatte jedoch keine Python3 Installation aktuell auf dem Rechner.
So kann man sich täuschen ;-)

Ist raw_input in Python3 verschwunden?
War das böse versteckte eval als Sicherheitslücke der eigentliche Grund
für die Änderung gewesen?
1
input()
2
os.system("rm somefile")
Gast #4480160
Kaj schrieb:
> #!/usr/bin/env python3
>
> def main():
>     zahlinput = input('Gib die Zahl 1 ein: ')
>     if zahlinput == '1':
>         print('Das war die 1')
>
>     elif zahlinput == '2':
>         print('Und das die 2')
>
>     else:
>         print('Die Eingabe war: %s' % (zahlinput))
>
>     print('Ende von main. Script wird beendet.')
>
> if _name_ == '__main__':
>     main()



Hi, ich habe etwas ähnliches und googgel hat diesen Beitrag gefunden.

Wie müsste dieses Beispiel aussehen, wenn eine Falscheingabe gemacht 
wurde das es wieder von vorne beginnt?
Gast #4480237
1
#!/usr/bin/env python3
2

3
def main():
4
    condition = False
5
    while condition is False:
6
        zahlinput = input('Gib die Zahl 1 ein: ')
7
        if zahlinput == '1':
8
            print('Das war die 1')
9
            condition = True
10

11
        elif zahlinput == '2':
12
            print('Und das die 2')
13
            condition = True
14

15
        else:
16
            print('Die Eingabe war: %s' % (zahlinput))
17
  
18
    print('Ende von main. Script wird beendet.')
19

20

21
if __name__ == '__main__':
22
    main()
Nur eine von vielen moeglichkeiten.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.