Tính tổng các phần tử là số lẻ trong list

answer

Tính tổng các phần tử là số lẻ trong list

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

Tính tổng các phần tử là số lẻ trong list

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: 25

Làm thế nào nó hoạt động?

  • Các input()chức năng trả về một strđối tượng, được chuyển đổi thành một số nguyên bằng cách sử dụng int()chức năng.
  • Số nguyên được bao bọc trong hàm range()và list()để chuyển đổi số đã cho thành danh sách các giá trị trong phạm vi đó.
    • Đây là một quy ước bạn sẽ sử dụng / thấy rất nhiều trong sự nghiệp Python của mình.
  • Cắt danh sách được sử dụng để lấy mọi phần tử thứ hai trong danh sách. Với danh sách dựa trên số 0, đây sẽ là các số chẵn.
  • Cắt cùng một danh sách một lần nữa, bắt đầu với phần tử thứ hai, và lấy mỗi phần tử thứ hai ... số lẻ.
    • Liên kết đến một câu trả lời SO hay về việc cắt trong Python.
  • Chỉ cần sử dụng sum()hàm để lấy tổng.

17 hữu ích 4 bình luận chia sẻ

answer

Tính tổng các phần tử là số lẻ trong list

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 - e

Xá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 True

Lư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

Tính tổng các phần tử là số lẻ trong list

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

Tính tổng các phần tử là số lẻ trong list

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

Tính tổng các phần tử là số lẻ trong list

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

Mục đích của mã là tìm tổng của số chẵn và tổng của các số lẻ từ 0 đến số được nhập vào và in ra màn hình.

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

5

Sản lượng mong đợi

6 9

Giải trình

Tổng chẵn: 2 + 4 = 6

Tổng lẻ: 1 + 3 + 5 = 9

Đầu ra của bạn

6 4 (đầu ra sai)

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

Tính tổng các phần tử là số lẻ trong list

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 - odd

Tổ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

Tính tổng các phần tử là số lẻ trong list

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

Tính tổng các phần tử là số lẻ trong list

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

Tính tổng các phần tử là số lẻ trong list

Đỗ 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

Tính tổng các phần tử là số lẻ trong list

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

Tính tổng các phần tử là số lẻ trong list

Đỗ 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ẻ