While-loop in Python

Hiện tại em đã xem xong 30 video của anh Đạt và trong khi chờ đợi anh Đạt làm những video tiếp theo thì em có tự tìm hiểu nhưng có 1 lỗi như sau:
Em dùng 1 function để định nghĩa 1 vòng lặp while nhưng khi đưa các biến vào thì cứ bị lặp liên tục và không thể kết thúc. Mấy anh cho em xin hướng giải quyết nha.

Code:

i = 0
numbers = []

n = raw_input("Can you give me a value random: ")
def count(*a):
    i , bottom = a
    while i < bottom:
        print "At the top i is %d" % i
        numbers.append(i)

        i += 1
        print "Numbers now: ", numbers
        print "At the bottom i is %d" % i

count(i,n)
print "The numbers: "

for num in numbers:
    print num

Cám ơn các anh.

Sau khi đọc code nhiều lần thì em biết em sai chổ là quên int(raw_input()) ^^!.

2 Likes

Hahaha :+1: anh góp ý nhé, anh chưa đọc code, em thử đặt print để xem giá trị của các biến và xem thử chương trình mình chạy tới đâu thì dễ debug hơn :smile:

Cám ơn anh.
Mà anh cho em hỏi 1 vấn đề là:
Tại sao khi em không int( raw_input() ) Tức là chỉ viết raw_input() thì vòng while nó cứ lặp liên tục.
Khi thêm int vào thì raw_input() có nghĩa là chỉ nhập số.
Em vẫn không hiểu là vì sao nó lại lặp không giới hạn như vậy.

1 Like

Bởi vì khi đó nstring chứ không phải là int. Khi em so sánh while i < bottom thì điều kiện này luôn đúng. Bởi vì intstring là hai kiểu dữ liệu khác nhau, trong Python để so sánh hai kiểu dữ liệu khác nhau thì ta sẽ so sánh tên của hai kiểu dữ liệu này. Mà ta thấy "int" < "string", thế nên i < bottom với bất kể giá trị nào.

Không phải, khi ta thêm int vào có nghĩa là ta convert giá trị nhập vào thành số.

Cám ơn anh rất nhiều.

1 Like

Một số cách debug trong python khá hay nè.
http://ngochin.com/2013/03/08/debug-python/

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