【问题标题】:Having problems with Value errors in Python 3Python 3 中的值错误问题
【发布时间】:2020-08-30 05:41:56
【问题描述】:

我正在编写一个测试程序,其方式类似于出租商店的库存跟踪器。 我正在检查用户输入的数据,但我的一个 if 语句检查条目时经常收到 ValueError。

def check_entries (): #This function checks whether what the user entered is correct for the entry and store

global customer_name_error_label
global receipt_numb_error_label
global item_hired_name_error_label
global numb_items_hired_error_label
global numb_items_hired_numb_rel_error_label

if  customer_name_entry.get () .isalpha ()  and   receipt_number_entry.get().isdigit() and  item_hired_entry.get () .isalpha ():
    if number_of_items_hired_entry.get () .isdigit () and int (number_of_items_hired_entry.get () ) >0 and int (number_of_items_hired_entry.get () )  <500:

        customer_name_error_label.grid_forget ()
        receipt_numb_error_label.grid_forget ()
        item_hired_name_error_label.grid_forget ()
        numb_items_hired_error_label.grid_forget ()
        numb_items_hired_numb_rel_error_label.grid_forget ()
        append_lists ()


else: 

       if customer_name_entry.get () .isalpha () ==False:
        customer_name_error_label=Label (main_frame,text="Please enter a name that only has letters,no numbers ,and there must be a name entered ",bg='red')
        customer_name_error_label.grid (row=0,column=3)
 
        if receipt_number_entry.get () .isdigit() ==False:
            receipt_numb_error_label=Label (main_frame,text="Please enter a receipt number that is only a number and doesn't have any letters or symbols.",bg='red')
            receipt_numb_error_label.grid(row=1,column=3)

        if item_hired_entry.get () .isalpha ()== False:
            item_hired_name_error_label=Label (main_frame,text="Please enter a item name that only has letters,numbers and symbols aren't accepted.",bg='red')
            item_hired_name_error_label.grid (row=2,column=3)
       
       if number_of_items_hired_entry.get ().isdigit ()== False:
           numb_items_hired_error_label=Label (main_frame,text="The number of items hired can only be a number,symbols,and letters aren't accepted.",bg='red')
           numb_items_hired_error_label.grid (row=4,column=3)

       if int (number_of_items_hired_entry.get () ) <0 and int (number_of_items_hired_entry.get () ) >500:
           numb_items_hired_numb_rel_error_label=Label (main_frame,text="The number of items hired can only be more then 0 and less then 500",bg='red')
           numb_items_hired_numb_rel_error_label.grid (row=5,column=2)

有一张我正在输入的图像,它是所有条目的空字符串,然后我按下附加详细信息按钮。]

这是错误 if int (number_of_items_hired_entry.get () ) &lt;0 and int (number_of_items_hired_entry.get () ) &gt;500: ValueError: invalid literal for int() with base 10: ''

【问题讨论】:

  • 修正缩进。你觉得空字符串怎么能转成整数,不要对比Falsenot,用if not (0 &lt; number &lt; 500):
  • 你期待int('')的结果是什么?

标签: python python-3.x tkinter python-3.7


【解决方案1】:
# add 2 lines

if number_of_items_hired_entry.get() == '':
          number_of_items_hired_entry.set('0') 


if int(number_of_items_hired_entry.get () ) <0 and int(number_of_items_hired_entry.get () ) >500:
           numb_items_hired_numb_rel_error_label=Label (main_frame,text="The number of items hired can only be more then 0 and less then 500",bg='red')
           numb_items_hired_numb_rel_error_label.grid (row=5,column=2)

【讨论】:

  • 请详细说明/添加一些上下文,说明为什么添加这两行可以解决问题。
猜你喜欢
  • 2013-05-13
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 2011-07-03
  • 2015-05-25
  • 2021-09-13
  • 1970-01-01
相关资源
最近更新 更多