30/09/2018, 18:33

True/False trong Python

Chào mọi người, mình mới học lập trình và mình đang phải học sử dụng Python. Mình muốn làm 1 bài tập đơn giản là xét xem 1 dãy số có đúng thứ tự tăng dần hay ko, nhưng có vẻ code của mình có vấn đề, khi chạy thì không hiển thị là true hay false và chỉ hiển thị dạy số đó. Mong mọi người giúp đỡ. mình viết thế này:

def ordonate(a):
    suntOrdonate = True
    i = 0
    while suntOrdonate and i in range(0,len(a)-1) :
        if a[i]> a[i+1]:
            suntOrdonate = False
    return suntOrdonate
a=[1,2,3,4,5]
print ordonate(a)

Đã được các bạn sửa, mình chỉnh lại và chạy thành công cảm ơn các bạn đã giúp đỡ:smile:

Gió viết 20:42 ngày 30/09/2018

a ở đâu ra vậy? thay a=b

IRis Đỗ viết 20:35 ngày 30/09/2018

Đầu tiên bạn bạn sửa:

if a[i]> a[i+1]: --------->>> if b[i] > b[i+1]:

Như vậy chương trình bạn vẫn sai về mặt thuật toán vì nếu bạn cho b là một dãy không tăng liên tục thì nó sẽ return False nhưng khi bạn cho b là dãy tăng thì lỗi list index out of range do khi i = i + 1 = len(b) - 1 thì vòng lặp while sẽ chạy lần cuối vì điều kiện if b[i] > b[i+1] sẽ không so sánh được vì phần tử b[i+1] không tồn tại nó sẽ hiện lỗi trên!
Ta sẽ sửa lại như sau

 def ordonate(b):
    suntOrdonate = True
    for i in range(0,len(b)-1):
        if b[i] > b[i+1]:
            suntOrdonate = False
    return suntOrdonate
Nghiệp viết 20:43 ngày 30/09/2018

Sr do mình sửa nhiều quá nên loạn

Nghiệp viết 20:37 ngày 30/09/2018

WOW, vậy là lỗi thuật toán của mình. Cảm ơn IRis_Do nhiều nhé

Bài liên quan
0