• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak sprawdzić czy liczba wpisana z input jest int czy float?

Object Storage Arubacloud
0 głosów
3,896 wizyt
pytanie zadane 6 października 2020 w Python przez TeaCup Obywatel (1,370 p.)

Witam,

Mam kod:

a = input("First number is: ")
b = input("Second number is: ")

result = calculate(action, a, b)  # calculations of operation

print(result)

Chciałbym wykrywać czy a i b są typu float lub typu int jednak z inputu mam typ str. Zależy mi na tym by result był w formie int jeśli liczby a i b są typu int oraz żeby rezultat był w formie float jeśli a i b są typu float.

Dzięki za pomoc.

Pozdrawiam.

4 odpowiedzi

+1 głos
odpowiedź 6 października 2020 przez Igorek Mądrala (6,290 p.)
Żeby sprawdzić czy wartość jest int-em JEŻELI PISZESZ W PYTHONIE możesz "przerobić " na int

np. zmienna = int(input("Podaj: "))

albo zmiennaint = int(zmienna)

tylko że jeśli to nie jest int, wyrzuci ci błąd więc zrób instrukcje try, i jeśli wyrzuci błąd to znaczy że string, jeśli nie to znaczy że int :D
+1 głos
odpowiedź 6 października 2020 przez MsMaciek123 Pasjonat (24,760 p.)
a = input("First number is: ") 
b = input("Second number is: ")

try: int(a)
except ValueError:
	try: float(a)
	except ValueError: print("blad!")
	else: print("float!")
else: print("int")

Ten kod sprawdza, czy zmienną a (typu string) da się przekonwertować na int, jeśli tak, wypisze ci "int". W przeciwnym razie sprawdzamy czy da się przekonwertować na float. Jeśli takm wypisze ci "float". W przeciwnym razie będzie "blad!" (to sprawdza tylko jedną zmienną, jeśli potrzebujesz drugiej to skopiuj kod lub zrób pętle)

–1 głos
odpowiedź 6 października 2020 przez Benek Szeryf (90,870 p.)
edycja 6 października 2020 przez Benek

Alternatywnie to jeszcze można zrobić to tak:

from ast import literal_eval as liteval


try:
    print(calculate(action, *map(liteval, (a, b))))
except:
    print("Input data must be type of int or float")

Choć trzeba mieć na uwadze, że ktoś w ten sposób będzie w stanie przemyć np. krotkę do funkcji calculate. Wszystko zależy, co ona robi.

–2 głosów
odpowiedź 6 października 2020 przez mokrowski Mędrzec (155,460 p.)
def is_convert_to(value, tp):
    try:
        v = tp(value)
    except ValueError:
        pass
    else:
        return True
    return False

def coerce_type(value1, value2):
    if is_convert_to(a_str, int) and is_convert_to(b_str, int):
        return int(value1), int(value2)
    elif is_convert_to(a_str, float) and is_convert_to(b_str, float):
        return float(value1), float(value2)
    raise ValueError("Coerce type error!")

if __name__ == '__main__':
    a_str = input("First number is: ")
    b_str = input("Second number is: ")
    a, b = coerce_type(a_str, b_str)
    print("{}: {}, {}: {}".format(a, type(a), b, type(b)))

Szkolnie napisane...

Podobne pytania

0 głosów
1 odpowiedź 5,809 wizyt
+1 głos
1 odpowiedź 2,038 wizyt

92,548 zapytań

141,391 odpowiedzi

319,510 komentarzy

61,932 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...