• 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?

0 głosów
5,097 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 (93,230 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 (158,940 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ź 7,266 wizyt
+1 głos
1 odpowiedź 3,227 wizyt

93,607 zapytań

142,530 odpowiedzi

322,999 komentarzy

63,098 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

Kursy INF.02 i INF.03
...