Meine Anfängerfragen :)

Code-Stücke können hier veröffentlicht werden.
Antworten
Testuser0815
User
Beiträge: 1
Registriert: Donnerstag 6. Oktober 2022, 12:12

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)
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten