Odpowiedź :
Zmienna wczytywana z klawiatury domyślnie jest typu string.
Można użyć np. funkcji float() żeby sprawdzić, czy można wprowadzony ciąg znaków zamienić na typ float (czyli generalnie na liczbę). Tak to działa:
❯ python3
Python 3.8.10 (default, Sep 28 2021, 16:10:42)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> L="wyraz"
>>> float(L)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: 'wyraz'
>>> L="123"
>>> float(L)
123.0
>>> L="112.221"
>>> float(L)
112.221
>>>
Uwaga na dane wpisywane z przecinkiem:
>>> L="12,22"
>>> float(L)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: '12,22'
>>>
Można sobie z tym poradzić - o tym dalej.
Zdefiniujemy funkcję, która sprawdzi czy da się zamienić zmienną na typ float - jeśli tak to zwróci True, jeśli się nie da (ValueError) zwróci False.
Sprawdzaną zmienną będzie nasz string - czyli najpierw zapytamy o napis (L), a następnie przekażemy go do naszej funkcji - w zależności od wyniku napiszemy czy L jest liczbą (dało się przekształcić w typ float) czy nie (nie udało się przekształcić w typ float).
Kod:
def czyLiczba(i):
try:
float(i)
return True
except ValueError:
return False
L = input("Napis (L): ")
sprawdzL = czyLiczba(L)
if not sprawdzL:
print("L nie jest liczbą")
else:
print("L jest liczbą")
Działanie:
❯ python3 czyliczba.py
Napis (L): napis
L nie jest liczbą
❯ python3 czyliczba.py
Napis (L): 112
L jest liczbą
❯ python3 czyliczba.py
Napis (L): 312.21
L jest liczbą
ALE:
❯ python3 czyliczba.py
Napis (L): 232,11
L nie jest liczbą
Jeśli chcemy aby liczby z przecinkiem również były uznawane za liczby możemy użyć przy zapisywaniu stringa funkcji replace() i zamienić przecinek na kropkę - wtedy konwersja na zmienną typu float się powiedzie. Czyli jak wpiszemy np. "123,33" to program zapisze zmienną jako "123.33". Można to uznać za mało eleganckie bo zawsze zamieni przecinki na kropki, nawet w napisach - ale w przypadku tego programu i jego funkcji można to przeboleć :)
Jeśli chcemy tego dokonać trzeba zamienić linkję z inputem na taką:
L = input("Napis (L): ").replace(",",".")
wtedy:
❯ python3 czyliczba.py
Napis (L): 241,55
L jest liczbą
Pozdrawiam