Лучше всего, если сначала просто взять строку, а затем попытаться получить целое число. Таким образом, ваш код не потерпит неудачу так быстро. Вы можете решить свой пример следующим образом:
# you need to initialise the variables in order to avoid an error when
# summing them up
number_of_dogs = 0
number_of_cats = 0
number_of_rabbits = 0
while True:
# Ask for the desired mode after each 'secondary entry'
a = input(
"Select A Question:*' \n\
Dog Question: '1' \n\
Cat Question: '2' \n\
Rabbit Question: '3' \n\
Calculate Total Animals: '4' \n\
Enter one of the above options 1-4:")
if a is '1':
# get the user input as a string
dogs = input("How many doggos do you have?: ")
try:
# try to convert it (you can also combine this with the prior
# input(...) but then you're more likely to catch exceptions
# you don't want to catch)
number_of_dogs = int(dogs)
except:
print("please just enter a digit")
elif a is '2':
cats = input("How many cats do you have?: ")
try:
number_of_cats = int(cats)
except:
print("please just enter a digit")
elif a is '3':
rabits = input("How many rabbits do you have?: ")
try:
number_of_rabbits = int(rabits)
except:
print("please just enter a digit")
elif a is '4':
print("You have "
+ str(number_of_dogs
+ number_of_cats
+ number_of_rabbits)
+ " animals")
break
else:
print("Please enter a valid value e.g. '1', '2', '3'"
"To add up your animals '4'")
И еще небольшой совет: попробуйте использовать более объяснительные имена переменных, это сделает код более читабельным. И вы также можете использовать более логичные варианты выбора в первом операторе ввода: «Собаки», «Кошки» и т. Д., А не 1, 2, 3 ...
Ниже результаты моей собственной домашней работы - надо надеяться, кто-то находит этот анализ встроенных поставщиков EJB полезным при решении если и который контейнер использовать.
Я пошел с Apache OpenEJB, так как он предлагает богатый набор функций, частично поддерживает EJB 3.1 и кажется как самое активное и хорошо окружил предложение.
Как обычно, то, какой продукт должен работать лучше всего на Вас действительно, зависит от Ваших фактических требований, целей и среды.
Встроенный JBoss
Apache OpenEJB 3.1
EasyBeans