If schleife in Python

Gast #4471740
Lesenswert?

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
Lesenswert?

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
Lesenswert?

>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 #4472217
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren