Tính tổng các phần tử là số lẻ trong list
answer Huỳnh Chuẩn Khoa · Huỳnh Chuẩn Khoa 08:52 26/11/2020 for n in range(number): x += (1 - n % 2) * n y += (n % 2) * n 13 hữu ích 0 bình luận chia sẻ answer Vũ Thúy Hiền · Vũ Thúy Hiền 08:55 26/11/2020 Hoàn toàn cho mục đích giáo dục (và một chút thú vị), đây là một giải pháp hoàn toàn không sử dụng bất kỳ forvòng lặp nào . (Được cho là, trong logic cơ bản của các hàm, có ít nhất năm vòng lặp.) num = list(range(int(input('Enter number: ')))) even = num[::2] odd = num[1::2] print('Even list:', even) print('Odd list:', odd) print('Even:', sum(even)) print('Odd:', sum(odd))Đầu ra: Enter number: 10 Even list: [0, 2, 4, 6, 8] Odd list: [1, 3, 5, 7, 9] Even: 20 Odd: 25Làm thế nào nó hoạt động?
17 hữu ích 4 bình luận chia sẻ answer Lê Phú Gia · Lê Phú Gia 09:13 26/11/2020 Bạn đã yêu cầu một giải pháp với một vòng lặp, nhưng làm thế nào về một giải pháp không có vòng lặp? Ai cũng biết rằng tổng các số từ 1đến nlà (n+1)*n/2. Như vậy, tổng số thậm chí số là 2 * (m+1)*m/2với m = n//2(ví dụ floor(n/2)). Tổng của số lẻ sau đó có thể được tính bằng tổng của tất cả các số trừ đi tổng của các số chẵn. n = 12345 m = n // 2 e = (m+1)*m o = (n+1)*n//2 - eXác minh: >>> e, e==sum(i for i in range(n+1) if i % 2 == 0) 38112102 True >>> o, o==sum(i for i in range(n+1) if i % 2 == 1) 38105929 TrueLưu ý: Điều này tính tổng cho số lên đến và bao gồm n . 11 hữu ích 0 bình luận chia sẻ answer Bùi Bảo An · Bùi Bảo An 08:57 26/11/2020 for n in range(1,number,2): x += n y += n-1 print(y) print(x) Mã này có cùng đầu ra với ví dụ. 4 hữu ích 4 bình luận chia sẻ answer Võ Trang Ðài · Võ Trang Ðài 09:07 26/11/2020 Toán tử bậc ba: for n in range(number): x += (n,0)[n%2] y += (0,n)[n%2]4 hữu ích 0 bình luận chia sẻ answer Vũ Nhân Nguyên · Vũ Nhân Nguyên 09:16 26/11/2020 Tôi nghĩ bạn là người mới bắt đầu. Tôi không muốn làm bạn nhầm lẫn với việc thực hiện phức tạp các toán tử cắt. Theo như bạn đã đề cập
Không cần phải tìm số ban đầu là số lẻ / chẵn Và chương trình của bạn đã sai nếu bạn muốn đưa số đầu vào để tính tổng chẵn / lẻ . Thí dụ Đầu vào
Sản lượng mong đợi
Giải trình Tổng chẵn: 2 + 4 = 6 Tổng lẻ: 1 + 3 + 5 = 9 Đầu ra của bạn
Hàm range () sẽ loại trừ số. Nó sẽ chỉ lặp lại từ 0 đến 4 trong khi đầu vào là 5. vì vậy nếu bạn muốn bao gồm 5, bạn nên thêm 1 vào số trong khi chuyển nó trong hàm range () . number = int(input()) x = 0 y = 0 for n in range(number+1): x += (1 - n % 2) * n #this will add 0 if not even y += (n % 2) * n #this will add 0 if not odd print(x) print(y)4 hữu ích 0 bình luận chia sẻ answer Hoàng Bình Ðịnh · Hoàng Bình Ðịnh 09:34 26/11/2020 Cũng có một cách toán học: num = int(input("Enter number:")) odd = ((num+1)/2)**2 even = num*(num+1)/2 - oddTổng của n số lẻ đầu tiên là n ^ 2. Để có được số lượng các số lẻ, chúng tôi sử dụng (num+1)/2. Để lấy tổng các số chẵn, chúng ta có thể sử dụng cách tiếp cận tương tự, nhưng tôi thích hơn, trừ oddtổng của n số đầu tiên, là n * (n + 1) / 2. 4 hữu ích 0 bình luận chia sẻ answer Hoàng Uy Vũ · Hoàng Uy Vũ 09:17 26/11/2020 Đây là 2 xu của tôi nếu chúng tôi được phép sử dụng numpy. import numpy as np number = int(input()) l = np.array(range(number)) print('odd:',sum(l % 2 * l)) print('even:', sum((1- l % 2) * l))3 hữu ích 0 bình luận chia sẻ answer Hoàng Hải Vy · Hoàng Hải Vy 09:14 26/11/2020 Tổng của n số đầu tiên là n (n + 1) / 2 (Suy ra toán học). Vì vậy, nếu chúng ta biết giá trị của n thì chúng ta có thể tìm thấy tổng của tất cả các số từ 1 đến n. Nếu chúng ta tìm tổng của tất cả các số lẻ trước n và trừ tổng của n đầu tiên, chúng ta nhận được tổng của tất cả các số chẵn trước n . Đây là mã: n = int(input("Enter a number: ")) odd = 0 for i in range(1,n+1,2): odd += i even = int(n*(n+1)/2) - odd print("even:",even,"odd:",odd)1 hữu ích 0 bình luận chia sẻ answer Đỗ Thiếu Cường · Đỗ Thiếu Cường 16:12 30/11/2020 Nếu bạn được phép sử dụng một danh sách number = int( input() ) counts = [ 0, 0 ] for n in range( number ): counts[ n % 2 ] += n print( counts[ 0 ] ) print( counts[ 1 ] )1 hữu ích 0 bình luận chia sẻ answer Phạm Hiệp Hà · Phạm Hiệp Hà 14:06 06/12/2020 Có một cách khác để tổng các chỉ số chẵn và lẻ với nhau trong vòng lặp for dựa trên mô-đun phần dư 2: number = int(input()) odd = 0 even = 0 for i in range(len(number)): odd += i * (i % 2) even += i * ((i + 1) % 2) print (odd, even)1 hữu ích 0 bình luận chia sẻ answer Đỗ Hoàng Thư · Đỗ Hoàng Thư 11:06 08/12/2020 number = 1000000 x = 0 y = 0 [(x:=x+n, y:=y+(n+1)) for n in range(0,number,2)] print(f'{x}, {y}') Điều này sử dụng khả năng hiểu danh sách và toán tử gán Python mới. 1 hữu ích 0 bình luận chia sẻ |