isdigit funktioniert nicht für mich
def listMaker(a, b):
if b.isdigit() == False:
print("Sorry is not a valid input")
else:
newList = [a] * b
return newList
Bin ich immer die Fehlermeldung:
AttributeError: 'int' object has no attribute 'isdigit'
Wie würde ich dieses Problem beheben?
isdigit
ist eine Methode, die auf strings und keine Integer-zahlen. Wenn Sie eine Ganzzahl ist es schon gewährleistet sein, alle numerischen, weil es einen numerischen Typ. Wie sind Sie mit der Zuweisung eines Anfangswertes zub
?- Meinst du
if not isinstance(b, int):
? Beachten Sie, dassif not b.isdigit():
ist sehr viel besser lesbar als der Vergleich zuFalse
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
isdigit()
ist eine Methode, einestr
Klasse. Je nachdem, was erreicht werden soll, konvertieren Sie b, um den ersten string:oder (und besser), verwenden Sie
isinstance
zu überprüfen-Attribut-Typen:Konnte Sie nur wickeln Sie die Eingabe in
int
statt.Beispiel:
Wäre dies die pythonic EAFP
Scheint nur die
string
Typ hat diese Methode, nichtint
. Sehen es.Scheint, dass Sie bereits ganze Zahl, wenn nicht sicher, dass Sie tun können:
Docstring:
Gibt True zurück, wenn alle Zeichen in S Ziffern und es ist mindestens ein Zeichen in S, sonst False.
Lassen Sie uns versuchen, es in der python-shell.
Können wir auch vergleichen dir(aaa) mit dir(bbb) und dir(ccc) für details.