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

Cloud VPS
+2 głosów
1,457 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 4,715 wizyt
0 głosów
1 odpowiedź 562 wizyt

93,460 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,837 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
...