Frage von Codder312, 33

Was stimmt nicht mit diesem Code // Python 3?

http://pastie.org/10681336

Hier der Code. Ich will die schleife abbrechen wenn die eingabe kein string ist. aber egal ob ich string oder integer eingebe die schleife wird sofort abgebrochen. hoffe ihr könnt mir helfen danke:)

Antwort
von AnonYmus19941, 14
#programm
def disclaimer():
print("---------------------------")
print("Willkommen zum Programm !")
print("---------------------------")
disclaimer()
for name in 1,2,3,4:
print("Bitte den namen eingeben:")
name=str(input())
if name == type(int):
continue
else:
break


print("Willkommen",name,"!")

1. Warum hast du disclaimer in eine Funktion gepackt?

2. Als Schleifenvariable verwendet man normalerweise i, j, k

3. Es gibt eine kürzere Schreibweise: "for i in range(1, 5)"

4. input() liefert immer einen String zurück (in Python3)

5. es müsste "if type(name) == int:" sein

6. str() wandelt die eingabe in einen String um

7. "continue" und "break" sind nicht gerne gesehen, sollten also möglichst vermieden werden

8. für diesen Fall solltest du vermutlich lieber eine while-Schleife verwenden, weil die nicht nur vier mal läuft, sondern solange, bis eine bedingung erfüllt ist. beispiel:

name = 0
while type(name) != string:
...
Kommentar von Majestro901 ,

Danke für deine ausführliche Antwort . Und was kann man anstatt Break und Continue verwenden außer den Code umzuschreiben?

Kommentar von AnonYmus19941 ,

z. B. eine while-Schleife (wie gesagt). Die prüft bei jedem Durchgang, ob eine Bedingung wahr ist, und solange sie wahr ist, wird die Schleife fortgesetzt. In dem Fall: solange der Typ von "name" ungleich "string" ist, wird die Schleife fortgesetzt (Code siehe oben). Oder solange der Typ int ist, wird die Schleife fortgesetzt:

while type(name) == int:
...

In deinem Fall lohnt sich das ganze allerdings nicht, da input() ab Python 3 immer einen String zurückliefert.

Antwort
von J0T4T4, 12

Die Funktion str() wandelt den Input in einen String um. Dann ist es auch kein Wunder, dass bei der Abfage, ob es sich um ein int handelt, nein zurückgegeben wird.

PS: Ich habe nicht viel Ahnung von Python, und nehme einfach mal an, dass name == type(int) das macht, was du sagst, was es machen soll (was in meinen C++ Augen nicht so aussieht).

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten