30/09/2018, 17:45

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!

htl@PyMI.vn viết 20:02 ngày 30/09/2018

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é

Thành Phạm viết 19:53 ngày 30/09/2018

Dùng isdigit nhá

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

Phát Nguyên viết 19:46 ngày 30/09/2018

Đ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

Thành Phạm viết 19:45 ngày 30/09/2018

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

htl@PyMI.vn viết 19:46 ngày 30/09/2018

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?

Bài liên quan
0