我正在尝试解决Value错误,以防用户输入字母

问题描述

我刚刚制作了一个无形的atm应用程序。没什么花哨的,您基本上可以创建一个有金额的帐户,也可以退出。我正在尝试解决错误,以防用户在Tkinter教科书中输入字母而不是整数。

我做了try catch语句,但是它仍然抛出Value错误

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,"your new balance is ",balance))
    except ValueError:
        pass

解决方法

您正在捕获IndexError,要捕获ValueError您必须添加

new_a = []
for i in a:
   if i is not 'NoneType':
       new_a.append(i)
,

如果在用户输入字母的情况下不会捕获Value错误,则可以尝试在输入详细信息之后使用if条件,并使用isalpha()方法检查是否输入了任何字母,如果是,您可以告诉用户,但不接受该输入。