Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Rada jak rozlišit v Pythonu zdali se jedná o str nebo int.

V předchozím kvízu, Online test znalostí Python 2.7, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Filip Lužný:14.12.2022 12:20

Ahoj,
chci se zeptat jak zapsat správně podmínku v pythonu, že jsem zadal číslo a né string:

Zkusil jsem: Zkoušel jsem:
year = int)

if year != int():
print("Udělali jste chybu v zadávání")

Chci docílit: Chci abych dokázal rozlišit zda je v inputu text nebo číslo. Děkuji

 
Odpovědět
14.12.2022 12:20
Avatar
Pavel
Člen
Avatar
Pavel:14.12.2022 17:28

Třeba takto:

if isinstance(year, int):
    print("OK")
 
Nahoru Odpovědět
14.12.2022 17:28
Avatar
Pavel
Člen
Avatar
Pavel:14.12.2022 18:05

Nebo použít metodu pro ten int, a případnou chybu odchytit přes try... catch.

 
Nahoru Odpovědět
14.12.2022 18:05
Avatar
Filip Lužný:15.12.2022 7:22

Děkuji.

Funguje

 
Nahoru Odpovědět
15.12.2022 7:22
Avatar
Jiří Svoboda:25.6.2023 11:17

další varianta - pro zajímavost je využít ** type()**

 
Nahoru Odpovědět
25.6.2023 11:17
Avatar
Pavel
Člen
Avatar
Odpovídá na Jiří Svoboda
Pavel:25.6.2023 20:39

Je ale třeba poznamenat, že to nejsou ekvivalenty. Type testuje konkrétní třídu, isinstance i podtřídy.
Příkladem třeba toto:

class myint(int):
  pass


a = myint(5)
b = 3

print(f"type a: {type(a)}")
print(f"type b: {type(b)}")

# classic operations work as expected
assert(a + b == 8)
assert(a * b == 15)

# type
if type(a) == int:
  print("[type] a is int")
else:
  print("[type] a is not int")


# isinstance
if isinstance(a, int):
  print("[isinstance] a is int")
else:
  print("[isinstance] a is not int")
 
Nahoru Odpovědět
25.6.2023 20:39
Avatar
Jiří Svoboda:26.6.2023 14:29

Souhlas. Nicméně v tomto případě jednoduchého ověření na "INPUT" mi přijde využití "TYPE" k porovnání přirozenější.
Pro podrobnosti ke srovnání TYPE x ISINSTANCE viz - "https://blog­.devgenius.io/what-is-better-type-vs-isinstance-3b948d1b81b5"

 
Nahoru Odpovědět
26.6.2023 14:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.