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

PYTHON Jak napisać kod, tak że gdy wpisze się litery w miejsce int wyskakiwał komunikat o błędzie napisany przeze mnie?

Object Storage Arubacloud
+2 głosów
1,301 wizyt
pytanie zadane 24 listopada 2018 w Python przez Kamrocky Początkujący (310 p.)

Witam wszytkich :)

Strasznie zagmatwany problem, nawet nie wiedziałem jak zadać pytanie.

Może od razu wkleję kod: 

import datetime
now = datetime.datetime.now()
print("Hej, przedstaw mi się :)")
print()

name = input("Jak masz na imię? ")
age = int(input("Dobra {}, a ile masz lat? ".format(name)))

if age == 100:
      print("Masz 100 lat!! Gratulacje! Spróbuj ponownie.")

elif age < 0:
      print("Ojć, podałeś niewsłaściwą liczbę. Spróbuj ponownie.")

elif age > 100:
      print("Masz ponad 100 lat!! Gratulacje! Spróbuj ponownie.")

else:
      result = ((100 - age) + now.year)
      print()
      print("Słuchaj {}, w {} roku będziesz mieć już 100 lat!!".format(name, result))

Staram się uwzględnić wszystkie przypadki (komunikat gdy podamy liczbę ujemną, liczbę równą 100 lub liczbę większą niż 100). 

Został mi tylko ostatni przypadek - gdy podamy coś innego niż liczbę. Nie mam pomysłu jak to zrobić.

Ktoś pomoże? :)

2 odpowiedzi

+3 głosów
odpowiedź 24 listopada 2018 przez Arkadiusz Sikorski Pasjonat (20,160 p.)
wybrane 24 listopada 2018 przez Kamrocky
 
Najlepsza

Jeśli chcesz to robić na piechotę, to możesz wczytać dane jako stringa przejrzeć wszystkie jego znaki, jeśli któryś nie będzie cyfrą, to znaczy, że nie podano liczby.

Możesz też użyć konstrukcji try..except i złapać wyjątek ValueError, który zostanie rzucony, gdy int() dostanie niepoprawny parametr (niepoprawnego stringa).

Jeśli nie jesteś zaznajomiony z wyjątkami, to w pythonie...warto się z nimi zapoznać :)

import datetime
now = datetime.datetime.now()
print("Hej, przedstaw mi się :)\n")
name = input("Jak masz na imię? ")
try:
	age = int(input("Dobra {}, a ile masz lat? ".format(name))) 
	if age == 100:
		  print("Masz 100 lat!! Gratulacje! Spróbuj ponownie.")
	 
	elif age < 0:
		  print("Ojć, podałeś niewsłaściwą liczbę. Spróbuj ponownie.")
	 
	elif age > 100:
		  print("Masz ponad 100 lat!! Gratulacje! Spróbuj ponownie.")
	 
	else:
		  result = ((100 - age) + now.year)
		  print()
		  print("Słuchaj {}, w {} roku będziesz mieć już 100 lat!!".format(name, result))
except ValueError:
	print("Niepoprawnie podana liczba!")

 

komentarz 24 listopada 2018 przez Kamrocky Początkujący (310 p.)
Dzięki wielkie za pomoc :)
+1 głos
odpowiedź 5 września 2019 przez zort Bywalec (2,080 p.)

Do try catch można wykorzystać modulo:

if x%2==0 or x%2==1

Podobne pytania

0 głosów
4 odpowiedzi 3,914 wizyt
0 głosów
1 odpowiedź 348 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...