Hướng dẫn sum of three digit number in python - tổng của ba chữ số trong python

Đây là một bài tập Python đơn giản và mã đã hoạt động nhưng tôi đã tự hỏi, nếu phần còn lại 10 % 10 bằng không, làm thế nào tôi có thể chia một số đã cho cho 0 và nhận được một cái gì đó ngoài lỗi? Nó có lẽ là tầm thường nhưng tôi không thể nhận ra những gì đang xảy ra.

number = int[input[]]
a = number // 100
b = number // 10 % 10
c = number % 10
print[a + b + c]

Hỏi ngày 20 tháng 12 năm 2020 lúc 0:56Dec 20, 2020 at 0:56

0

Chà, bạn không thực sự chia cho Zero ở bất cứ đâu trong ví dụ đó. Nếu bạn đang đề cập đến dòng b = number // 10 % 10, thì điều thực sự xảy ra là số đó được chia cho 10 và kết quả của điều đó được đưa vào modulo, có nghĩa là "còn lại sau khi chia cho 10". Tôi nghĩ rằng bạn đã hiểu thứ tự hoạt động sai trên dòng đó, điều này khiến bạn tin rằng sự phân chia bằng 0 có thể xảy ra. Nó không thể.

Đã trả lời ngày 20 tháng 12 năm 2020 lúc 1:06Dec 20, 2020 at 1:06

Điều quan trọng là sử dụng dấu ngoặc đơn khi làm việc với các toán tử hỗn hợp vì sự ưu tiên của nhà điều hành có thể dẫn đến kết quả ngoài ý muốn. Trong Python, % và // có cùng mức độ để biểu thức được đánh giá từ trái sang phải. Tham khảo 6.17 trong tài liệu Python để biết thêm thông tin chi tiết về ưu tiên cụ thể của ngôn ngữ.

Trong mã trên của bạn, vì nó được đánh giá từ trái sang phải, sự phân chia sàn sẽ luôn xảy ra trước khi hoạt động modulo để không có ZerodivSionerror có thể xảy ra. Nhưng để trả lời câu hỏi của bạn, bạn luôn có thể sử dụng thử và bắt khối để bắt ZerodivisionError và tự mình xử lý.try and catch block to catch the ZeroDivisionError and handle it on your own.

number = int[input[]]
try:
  a = number // 100
  b = number // [10 % 10]
  c = number % 10
  print[a + b + c]
except ZeroDivisionError:
    print["Please enter another number that's not a multiple of 10."]
    number = int[input[]]

Wovano

3.6485 Huy hiệu vàng22 Huy hiệu bạc44 Huy hiệu đồng5 gold badges22 silver badges44 bronze badges

Đã trả lời ngày 20 tháng 12 năm 2020 lúc 1:32Dec 20, 2020 at 1:32

1

Người dùng nhập số ba chữ số. & NBSP; Chương trình phải thêm các chữ số tạo nên số này. & NBSP; ví dụ, nếu 349 được nhập, chương trình sẽ hiển thị số 16, vì 3 + 4 + 9 = 16.

Làm thế nào để trích xuất các chữ số riêng lẻ từ một số?

& nbsp; Nếu một số được chia cho mười, phần còn lại sẽ là chữ số cuối cùng của số đó. & nbsp; ví dụ, nếu 349 được chia hoàn toàn cho 10 , bạn nhận được thương số 3 và phần còn lại 4; & nbsp; xa hơn, khi chia 3 cho 10, chúng ta nhận được số 0 và phần còn lại 3.

Trong các ngôn ngữ lập trình, hầu như luôn có hai hoạt động như vậy:

1] Tìm toàn bộ khi chia hoàn toàn,finding the whole when dividing entirely,

2] Tìm phần còn lại khi chia hoàn toàn. finding the remainder when dividing entirely.

Trong ngôn ngữ lập trình Python V.3, thao tác đầu tiên được ký hiệu là // [hai dấu hiệu phân chia] và thứ hai theo% [phần trăm dấu]. & NBSP; ví dụ::

>>> 34 // 10
3
>>> 34% 10
four

Lưu ý. & NBSP; Về số học, các hoạt động của phân chia số nguyên và phần còn lại chỉ được áp dụng cho các số nguyên. & NBSP; nhưng trong Python, chúng cũng có thể được sử dụng với các số phân số:

>>> 34.5% 10
4.5
>>> 34.5 // 10
3.0
>>> 34.5 // 12.9
2.0

Thuật toán để tìm tổng các chữ số của số ba chữ số ABC [trong đó A là hàng trăm, B là hàng chục và C là số] có thể được mô tả như sau:

  1. Tìm phần còn lại của phân chia & nbsp; abc & nbsp; bằng 10, hãy viết nó cho một biến & nbsp; ________ 9. & nbsp; đây sẽ là số & nbsp; c & nbsp ;.abc by 10, write it to a variable d1. This will be the number c .
  2. Hãy loại bỏ & nbsp; c & nbsp; in & nbsp; abc & nbsp; bằng cách chia chính xác cho 10.c in abc by dividing it exactly by 10.
  3. Tìm phần còn lại của phân chia & nbsp; ab & nbsp; bằng 10, hãy viết nó cho một biến & nbsp; ________ 10. & nbsp; đây sẽ là số & nbsp; b & nbsp ;.ab by 10, write it to a variable 
    number = int[input[]]
    try:
      a = number // 100
      b = number // [10 % 10]
      c = number % 10
      print[a + b + c]
    except ZeroDivisionError:
        print["Please enter another number that's not a multiple of 10."]
        number = int[input[]]
    
    0. This will be the number b .
  4. Loại bỏ số & nbsp; b & nbsp; in & nbsp; ab & nbsp; bằng cách chia chính xác cho 10.b in ab by dividing it exactly by 10.
  5. Số & nbsp; a là & nbsp; một chữ số. & Nbsp; Đây là một chữ số khác của số gốc.a is single-digit. This is another digit of the original number.
  6. Thêm số còn lại & nbsp; a & nbsp; với các giá trị của các biến & nbsp; ________ 9and & nbsp; ________ 10.a with the values ​​of the variables d1and 
    number = int[input[]]
    try:
      a = number // 100
      b = number // [10 % 10]
      c = number % 10
      print[a + b + c]
    except ZeroDivisionError:
        print["Please enter another number that's not a multiple of 10."]
        number = int[input[]]
    
    0.
n = input ["Enter a three-digit number:"]
n = int [n]

d1 = n% 10
n = n // 10
d2 = n% 10
n = n // 10

print ["Sum of digits of a number:", n + d2 + d3]

Tuy nhiên, nếu chúng ta biết rằng một số bao gồm ba chữ số [chữ số], có một cách khác để trích xuất các chữ số từ một số:

  1. Phần còn lại của số gốc chia cho 10 cho chữ số cuối cùng của số.
  2. Nếu chúng ta tìm thấy phần còn lại của phân chia cho 100 số ban đầu, thì chúng ta sẽ nhận được hai chữ số cuối cùng của số. & NBSP; Tiếp theo, chia số kết quả hai chữ số cho 10 và chúng ta sẽ có chữ số thứ hai của số .
  3. Nếu bạn chia số ba chữ số gốc cho 100, bạn sẽ nhận được chữ số đầu tiên của số.
n = input ["Enter a three-digit number:"]
n = int [n]
 
d1 = n% 10
d2 = n% 100 // 10
d3 = n // 100
 
print ["Sum of digits of a number:", d1 + d2 + d3]

Kết quả của công việc của cả hai tập lệnh là như nhau:

Enter a three-digit number: 742
Sum of digits of the number: 13

Bài Viết Liên Quan

Chủ Đề