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

+2 głosów
1,578 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 5,233 wizyt
0 głosów
1 odpowiedź 625 wizyt

93,633 zapytań

142,558 odpowiedzi

323,058 komentarzy

63,141 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2523p. - Maurycy W
  9. 2459p. - CC PL
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1851p. - Mariusz Fornal
  13. 1811p. - rafalszastok
  14. 1600p. - Rafał Trójniak
  15. 1588p. - Tomasz Bielak
Szczegóły i pełne wyniki

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
...