Hướng dẫn difference between sum of odd and even digits in python - sự khác biệt giữa tổng các chữ số lẻ và chẵn trong python

0

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang cố gắng tìm sự khác biệt giữa tổng của các chữ số chẵn và các chữ số lẻ trong một số. Mã của tôi chỉ hoạt động cho một trường hợp là 412 nhưng nó không hoạt động cho các số như 23 và 1203. Tôi không biết tại sao. Đây là mã của tôi

def digitS[n]:
    even = 0
    odd = 0
    while [n!=0]:
        for i in range[n]:
            if i % 2 == 0:
                even = even + [n%10]
            else:
                odd = odd + [n%10]
            n//=10

    return even - odd
n = 412
print[digitS[n]]

Abilogos

4.4772 Huy hiệu vàng16 Huy hiệu bạc37 Huy hiệu đồng2 gold badges16 silver badges37 bronze badges

Hỏi ngày 24 tháng 11 năm 2020 lúc 11:22Nov 24, 2020 at 11:22

3

Điều đó thật khó hiểu đối với tôi, rằng bạn muốn tìm thấy sự khác biệt giữa số lẻ và thậm chí các chữ số hoặc sự khác biệt giữa các vị trí lẻ và chẵn?

BTW, tôi giả định rằng bạn muốn đếm cái trước - mã của bạn thực hiện sau này với một số vấn đề trong thiết kế.

def digit[n]:
   even = 0
   odd = 0
   while [n != 0]:
       r = n % 10
       if r % 2 == 0:
          even = even + r
       else:
          odd = odd + r
       n //= 10

   return even - odd


n = 412
print[digit[int[n]]]

và một phản ứng ngắn gọn hơn với sự trợ giúp của chuỗi!

def digit[n]:
   even = [int[i] if int[i] % 2 == 0 else 0 for i in str[n]]
   odd = [int[i] if int[i] % 2 else 0 for i in str[n]]
   return sum[even] - sum[odd]

Đã trả lời ngày 24 tháng 11 năm 2020 lúc 11:40Nov 24, 2020 at 11:40

Javadrjavadrjavadr

3601 Huy hiệu bạc8 Huy hiệu đồng1 silver badge8 bronze badges

Chỉ cần loại bỏ cho vòng lặp.

def digitS[n]:
    even = 0
    odd = 0
    while [n!=0]:
        if n % 2 == 0:
            even += [n%10]
        else:
            odd += [n%10]
        n//=10

return even - odd
n = 412
print[digitS[n]]

Đã trả lời ngày 24 tháng 11 năm 2020 lúc 11:33Nov 24, 2020 at 11:33

AbilogosabilogosAbilogos

4.4772 Huy hiệu vàng16 Huy hiệu bạc37 Huy hiệu đồng2 gold badges16 silver badges37 bronze badges

1

Hỏi ngày 24 tháng 11 năm 2020 lúc 11:22

def digits[n]:
    even = 0
    odd = 0

    while [n!=0]:
        if n % 2 == 0:
            even += [n%10]
        else:
            odd += [n%10]
        n //= 10

    return abs[even - odd]

print[digits[412]] # 5
print[digits[23]] # 1

Đã trả lời ngày 24 tháng 11 năm 2020 lúc 11:33Nov 24, 2020 at 11:33

tanmay_gargtanmay_gargtanmay_garg

Abilogosabilogos1 silver badge13 bronze badges

2

Tôi đã thực hiện một số chỉnh sửa cho mã của bạn dưới đây. Những gì bạn đã cố gắng là hoàn toàn đúng, nhưng vòng lặp là một vật cản và nên được loại bỏ. Ngoài ra, từ những gì tôi hiểu, bạn muốn difference giữa các tổng số lẻ và thậm chí có chữ số. Đối với điều đó, bạn phải trả về giá trị tuyệt đối của even - odd.

3891 Huy hiệu bạc13 Huy hiệu đồngNov 24, 2020 at 11:34

Tôi nghĩ rằng bạn không cần for ở dòng thứ 5, vì bạn chỉ muốn lặp lại các chữ số thay vì toàn bộ phạm vi số. Vì vậy, ví dụ nếu số là 1203 bạn muốn kiểm tra 1, 2, 0 và 3, thay vì 0, 1, 2, 3 ... 1201, 1202. Ngoài ra, các chữ số đã được xử lý trong ____10, vì vậy for không cần thiết .

def digit[n]:
    even = 0
    odd = 0
    string = str[n]
    for i in string:
        if int[i] % 2 == 0:
            even += int[i]
        else:
            odd += int[i]
    return even - odd
n = 282
print[digit[n]] #12

Đã trả lời ngày 24 tháng 11 năm 2020 lúc 11:34Nov 24, 2020 at 11:37

Biến đầu vào của bạn thành một chuỗi, lặp lại từng yếu tố, kiểm tra xem chúng có kỳ lạ hay thậm chí bằng cách chuyển chúng thành số nguyên et voila!ombk

Đã trả lời ngày 24 tháng 11 năm 2020 lúc 11:371 gold badge3 silver badges15 bronze badges

ombkombk

def digit[n]:
    even = 0 # Sum of even numbers
    odd = 0 # Sum of odd numbers
    while [n!=0]:
        digit = n%10 # Get the right most digit of the number
        if digit % 2 == 0: # Check if the digit is even or odd
            even = even + digit
        else:
            odd = odd + digit
        n//=10 # Remove the digit from the number

    return even - odd
n = 412
print[digit[n]]

2.0281 Huy hiệu vàng3 Huy hiệu bạc15 Huy hiệu đồngNov 24, 2020 at 11:39

Tôi không chắc ý nghĩa của vòng lặp cho vòng lặp. Nhưng đây là một ví dụ về những gì bạn có thể làm thay thế. Loại bỏ vòng lặp cho và đi qua từng chữ số cho đến khi n == 0.Sandsten

Đã trả lời ngày 24 tháng 11 năm 2020 lúc 11:393 silver badges16 bronze badges

Làm thế nào để bạn nói sự khác biệt giữa số chẵn và số lẻ trong Python?

Các mã cần thiết được cung cấp dưới đây.num = int [input [nhập bất kỳ số nào để kiểm tra xem nó là lẻ hay thậm chí:Đầu ra] đầu ra: Nhập bất kỳ số nào để kiểm tra xem nó là lẻ hay thậm chí: 887 887 là lẻ.if [num % 2] == 0: print [“The number is even”] else: print [“The provided number is odd”] Output: Enter any number to test whether it is odd or even: 887 887 is odd.

Làm thế nào để bạn tìm thấy tổng các chữ số lẻ trong Python?

Đang làm việc :..
Bước 1: Đọc đầu vào số nguyên ..
Bước 2: Khởi tạo S và đặt nó thành 0 ..
Bước 3: Sử dụng modulo với 10 logic, chúng tôi sẽ nhận được chữ số cuối cùng của số ..
Bước 4: Thực hiện thao tác này bằng cách sử dụng trong khi vòng lặp ..
Bước 5: Kiểm tra xem số có lẻ hay không, nếu số là lẻ thêm vào kết quả ..
Bước 6: In tổng kết quả ..

Làm thế nào để bạn kiểm tra xem một khoản tiền thậm chí là trong Python?

Cho rằng tổng số từ 1 đến n có thể được tính bằng n*[n+1] // 2, bạn có thể nhận được một nửa số số đồng đều nếu bạn sử dụng n // 2 trong công thức. Sau đó nhân kết quảbởi 2 để có được tổng số số chẵn.get half of the sum of even numbers if you use N//2 in the formula. Then multiply the result by 2 to obtain the sum of even numbers.

Bài Viết Liên Quan

Chủ Đề