01/10/2018, 09:58
Cho mình hỏi lỗi trong đoạn code này với
num = []
n = 0
print "Go~ 'done' de ket thuc nhe!"
while True:
n = raw_input("Nhap vao so tiep theo :")
if n == "done" :
break
n1 = int(n)
num.append(n1)
print "Ban da nhap xong"
print "Cac so ca nhap la:", num
num2= num
tieptuc = raw_input("Nhan Enter de tiep tuc")
while len(num) > 1:
i = 0
m = 0
while i < len(num):
m = m + num[i]
i= i + 1
tb = m/len(num)
print "gia tri tb la:", tb
tieptuc2 = raw_input("Nhan Enter de tiep tuc")
for j in range(0 , len(num)-1):
if num[j] <= tb :
print j
num.pop(j)
print "Gia tri lon nhat la` :",num[0]
print "Trong cac so :",num2
Bài liên quan
Khi bạn làm thao tác này có nghĩa là
num2 và num
đều lấy giá trị từ một vùng nhớ. Do đó bạn thay đổinum
=> bạn cũng gián tiếp thay đổinum2
do đó muốn copy mảng ta phải
Mình bị lỗi như này khi chạy. Mọi người xem chỉ giúp mình với
Khi bạn pop các phần tử của mảng đồng nghĩa với việc mảng bị thay đổi đột ngột. Mà khi bạn chạy for bạn lại set cho nó chạy từ khoảng cách mảng đầu tiên
vậy a còn 2 phần tử thôi nhưng for vẫn lặp 3 lần.
Mình tưởng là cái range nó sẽ thay đổi qua mỗi vòng lặp. vì mình để là range( 0 , len(num) - 1)
Mình viết vòng for nằm trong vòng while, hay là nó chạy xong vòng for thì mới chạy tiếp while hả bạn
không bạn nó chỉ quan tấm tới cái số lúc đầu thôi. Vòng lặp for nó mặc định sẵn số lần lặp ngay từ lần đầu tiên rồi. Chỉ có while bạn mới tùy chỉnh được
Mình hiểu rồi, tks bạn nhiều nha