Tôi đang gặp một số vấn đề với câu lệnh try và except, tôi có một tiện ích con nhập dữ liệu vào chuỗi nhưng tôi có mã chuyển đổi thành số nguyên sau đó, vấn đề là nếu người sử dụng đầu vào một cái gì đó như văn bản nó ném một lỗi như thế này:biến cục bộ được tham chiếu trước khi gán với câu lệnh try và except
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.2/tkinter/__init__.py", line 1402, in __call__
return self.func(*args)
File "/home/ppppwn3d/workspace/Python/JailBreakBob/JailBreakBob.py", line 157, in buttonclick_gamescreen
entryx = int(e1.get())
ValueError: invalid literal for int() with base 10: 'abc'
Vì vậy, tôi muốn che giấu lỗi với thử và ngoại trừ báo cáo nhưng bây giờ tôi nhận được một thông báo lỗi.
Đây là hình thức của mã.
while pressed == 8 :
try:
entryx = int(e1.get())
entryy = int(e2.get())
except ValueError:
print("text")
answerx = answerlistx[randomimage]
answery = answerlisty[randomimage]
if entryx == answerx and entryy == answery
canvas.delete(images)
randomimage = random.randrange(0,49+1)
scorecounter = scorecounter + 1
game = PhotoImage(file=imagelist[randomimage])
images = canvas.create_image(30, 65, image = game, anchor = NW)
e1.delete(0, END)
e2.delete(0, END)
pressed = ''
if entryx > 10 or entryx < -10 or entryy > 10 or entryy < -10 :
wrong = canvas.create_image(30, 65, image = outside, anchor = NW)
e1.delete(0, END)
e2.delete(0, END)
pressed = ''
else:
wrong = canvas.create_image(30, 65, image = incorrect, anchor = NW)
e1.delete(0, END)
e2.delete(0, END)
pressed = ''
Thông báo lỗi mới:
text
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.2/tkinter/__init__.py", line 1402, in __call__
return self.func(*args)
File "/home/ppppwn3d/workspace/Python/JailBreakBob/JailBreakBob.py", line 165, in buttonclick_gamescreen
if entryx == answerx and entryy == answery:
UnboundLocalError: local variable 'entryx' referenced before assignment
tôi không thể tìm ra lý do tại sao điều này xảy ra và làm thế nào để sửa chữa nó vì vậy bất kỳ trợ giúp sẽ được đánh giá cao.
Xin cảm ơn trước.