#python #try-catch
#python #попробуйте-поймайте
Вопрос:
Я только что создал приложение для неосязаемого банкомата. ничего особенного, вы в основном создаете учетную запись с суммой и также можете снимать. Я пытаюсь исправить ошибку значения, когда пользователь вводит алфавит в учебнике Tkinter вместо целого числа.
Я выполнил инструкцию try catch, но она по-прежнему выдает ошибку значения.
def get_selected_row(event):
try:
global selected_tuple
index = list1.curselection()[0]
selected_tuple= list1.get(index)
e1.delete(0,END)
e1.insert(END,selected_tuple[1])
e2.delete(0,END)
e2.insert(END,selected_tuple[2])
e3.delete(0,END)
e3.insert(END,selected_tuple[3])
e4.delete(0,END)
e4.insert(END,selected_tuple[4])
except ValueError:
pass
def acct_details ():
global balance
list1.delete(0,END)
list1.insert(END,("Hello", acct_name.get()))
list1.insert(END, ("your account number is ", acct_number.get()))
list1.insert(END, ("and your balance is", balance))
def clear():
list1.delete(0,END)
e1.delete(0,END)
e2.delete(0,END)
e3.delete(0,END)
def withdraw_fxn(amount):
list1.delete(0,END)
try:
global balance
if balance < amount:
list1.insert(END,('Sorry, you have an insufficient Balance'))
else:
balance = balance - amount
list1.insert(END, (acct_name.get(), "Your new balance is ",balance))
except ValueError:
pass
def deposit_fxn(amount):
list1.delete(0,END)
global balance
try:
balance = amount
list1.insert(END,(acct_name.get(), "your new balance is ", balance))
except ValueError:
pass
Комментарии:
1. В чем ошибка?
2. Ошибка значения. и я уже сделал инструкцию try catch для ошибки значения
Ответ №1:
Вы перехватываете ошибку IndexError, чтобы перехватить ошибку ValueError, вы должны добавить
except ValueError:
...
Ответ №2:
Вместо того, чтобы ловить ошибку значения, когда пользователь вводит алфавит, вы можете попробовать поставить условие if после того, где вы вводите данные, и используя isalpha()
метод, вы можете проверить, введен ли какой-либо алфавит, если да, вы можете сообщить пользователю об этом и не принимать этот ввод.