Cách print thông báo nhập sai kiểu dữ liệu trong python 3?

Ví dụ mình có chương trình python tính tổng như thế này, mình eps kiểu dữ liệu là số, chạy đúng nếu mình nhập số:

print ("Tinh tong 2 so tu nhien")
print ("Nhap so a: ")
a = int(input())
print ("Nhap so b: ")
b = int(input())	
c = a+b
print ("Ket qua la: %s" %c)

Mình gán kiểu dữ liệu nhập vào là số, nếu mình nhập kí tự là abc vào thì nó sẽ báo lỗi thế này

Traceback (most recent call last):
  File "tinh_tong.py", line 5, in <module>
    b = int(input())
ValueError: invalid literal for int() with base 10: 'abc'

Mình nhớ không lầm là có một vòng lặp nếu nhập kí tự thì vòng lặp đó sẽ bắt nhập lại hoặc lệnh if kiểm tra có phải là số sau đó in ra thông báo chứ không ai in ra cái code lỗi thế kia, mình nhớ không lầm gọi là bẫy lỗi, phải ép ra thông báo chứ không in lỗi, nhờ pro hướng dẫn.

Xin cám ơn!

1 Like

bạn có thể thay đoạn:

a = int(input())

bằng:

while True:
    try:
        a = int(input("Nhap a: "))
        break
    except:
        print("a khong phai int")
        continue

Mình nghĩ có thể dùng decorator nhưng chưa tìm ra cách, bạn nào biết thì giúp thêm nhé :smiley:

1 Like

Dùng isdigit nhá :smiley:

http://www.tutorialspoint.com/python/string_isdigit.htm

2 Likes

Đoạn này không được bạn à, mình thử thay đoạn này vòng lặp sẽ chạy hoài luôn mà không qua được bước tiếp theo

1 Like

Bạn thay continue bằng break là được mà :smile:

continue là bắt nhập đến khi nào đúng thì thôi. Chẳng phải đó là mục đích của bạn?

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?