Seite 1 von 1

Meine Anfängerfragen :)

Verfasst: Samstag 15. Oktober 2022, 07:41
von Testuser0815
Hi gibt es eigentlich einen Sammelthread in dem blutige Anfänger kleine Schnipsel hochladen können, bei denen sie nicht weiter kommen? Also Fragen, die für die Profis hier sicher mit einem Blick zu beantworten sind. Ich weiß gar nicht ob es sich lohnt dafür einen thread aufzumachen?

Ich starre zum Beispiel seit einer halben Stunde auf diese paar Zeilen und verstehe nicht, warum ich bei der Eingabe/input() von Buchstaben nicht die erwünschte Fehlermeldung bekomme, sondern das Terminal sich mit
line 9, in <module> cap_no = int(cap_no) ValueError: invalid literal for int() with base 10: 'er'

beschwehrt.

ps: ich will einen Randomizer bauen. User gibt höchste Zahl ein und nun soll im ersten Schritt überprüft werden, ob diese Zahl eine Zahl und größer als 0 ist.

Code: Alles auswählen

import random

print("Welcome!\n")
input("Press any Key to continue... ")
print("''''''''''''''''''''''''''''''''\n")
cap_no = input("Pick the highest Number: ")

if cap_no.isdigit:
    cap_no = int(cap_no)
    if cap_no <= 0:
        print("Take a Number higher than 0")
        quit()
        
else:
    print("Take a Number")
    quit()

print(cap_no)

Re: Meine Anfängerfragen :)

Verfasst: Samstag 15. Oktober 2022, 10:20
von Sirius3
Was soll `cap_no` bedeuten? Benutze keine kryptischen Abkürzungen sondern benenne deine variable Namen so dass man sie gut verstehen kann. Das hilft auch dir um deinen Code besser zu verstehen. `isdigit` ist eine Methode, die man aufrufen muss. Besser wäre es aber, zu versuchen, den Wert per int umzuwandeln und im Fehlerfall die Exception abzufangen.

Re: Meine Anfängerfragen :)

Verfasst: Samstag 15. Oktober 2022, 20:29
von __blackjack__
@Testuser0815: Methoden sind immer wahr, völlig egal von welchem Objekt sie abgerufen wurden, also weder Typ noch Wert spielen da irgend eine Rolle. Und Methoden muss man explizit aufrufen. Weil sonst ja nicht klar ist ob man die Methode als Wert meinte, oder den Wert den die Methode zurück gibt wenn man sie aufruft.

`quit()` gibt es eigentlich nicht. Die Funktion ist für die interaktive Python-Shell gedacht. Und selbst wenn es sie gäbe, sollte man sie nicht als ”Notausgang” aus einem Programm verwenden und sich die Strukturierung des Programmflusses drücken.

Und ergänzend zum Hinweis von Sirius3 noch: Es gibt Zeichen die Ziffern sind, also bei der `isdigit()`-Methode wahr ergeben, aber die bei `int()` zu einer Ausnahme führen. Das war gerade hier erst Thema, mit Beispielen: viewtopic.php?p=411226#p411226