Отримання знань

дистанційна підтримка освіти школярів


Програми з функціями та циклами

Задача “Sum_digits.py”

 

   Дано цілі числа w і r. За допомогою функції Sum_digits(x) знайти суми цифр даних чисел.

   Функція для введеного аргументу x повертає знайдену суму цифр.

    Контрольні приклади

         1) w= 547, r= 9678          =>   k1= 16,  k2= 30

         2) w=10005, r= 98741     =>   k1= 6,    k2= 29

Розв’язання

   Нехай маємо деяке число x= 138. Щоб отримати кількість одиниць у числі, потрібно знайти остачу від ділення x на 10. У мові Python остачу від ділення знаходять за допомогою команди %. Тобто 8= 138%10

  Цифру 8 ми знайшли і далі повинні працювати без неї. Щоб із числа 138 отримати число 13, слід 138 націло поділити на 10

      13= 138/10

   Тепер працюємо з x= 13. Аналогічно проробимо дії:

          13%10 = 3 (друга цифра у числі x)

          13/10 = 1 (відкидаємо знайдену цифру 3)

   Наше число x стало дорівнювати 1.

          1%10 = 1 (третя цифра)

          1/10=0 (відкинули знайдену цифру 1)

  Число x набуло значення 0. Сенсу працювати далі немає, бо ми вже відділили всі цифри.

  Підведемо підсумки:

       1) Потрібно працювати до тих пір, поки x>0 (якщо x перетворилося в нуль, то далі працювати немає з чим).

       2) У циклі потрібно робити 2 дії:

                 • знаходити цифру як остачу від ділення числа x на 10 (cifra= x%10);

                 • змінювати число x, знаходячи цілу частину від ділення x на 10 (x=x/10).

  Отже, число x можна “порізати” на цифри за допомогою алгоритму:

         поки x>0
         пц
               cifra= x%10
               x=x/10
         кц

  Повернемось до умови задачі. Нам потрібно знайти суму цифр sym числа x. Зрозуміло, що початкове значення sym= 0 (поки нічого не додавали, сума дорівнює 0). У циклі, знайшовши чергову цифру cifra, слід додати її до суми.

   Матимемо:

        sym= 0
        поки x>0
        пц
              cifra= x%10
              sym= sym+cifra
              x=x/10
       кц

   Розглянемо повністю допоміжний алгоритм та його переклад мовою Python.

Допоміжний алгоритм Переклад мовою Python
 алг ціл Сума_цифр (ціл x)
        арг x
 поч
        sym= 0
        поки x>0
        пц
              cifra= x%10
              sym= sym+cifra
              x=x/10
       кц
       знач= sym
 кін    
 def  Sum_digits(x):
     sym=0
     while  x>0:
         cifra=x%10
         sym=sym+cifra
         x=x/10
     return sym

    Розглянемо основний алгоритм та його переклад мовою Python.

Основний алгоритм Переклад мовою Python
 алг Основний (ціл w, r, ціл s1, s2)
         арг w, r
         рез s1, s2
 поч 
       s1= Сума_цифр(w)
       s2= Сума_цифр(r)
 кін    
 w=input('w=')
 r=input('r=')
 s1= Sum_digits(w)
 print 's1=', s1
 s2= Sum_digits(r)
 print 's2=', s2

   Програма матиме вигляд:

      def  Sum_digits(x):
              sym=0
              while x>0:
                       cifra=x%10
                       sym=sym+cifra
                       x=x/10
              return sym

      w= input('w=')
      r= input('r=')
      s1= Sum_digits(w)
      print 's1=', s1
      s2= Sum_digits(r)
      print 's2=', s2


Задача “Digits.py”

  Дано два цілих числа m і n. Знайти для вказаних чисел:

  1) кількість цифр, скориставшись функцією Number(x), яка для аргумента x повертає кількість цифр у ньому;

   2) добуток парних цифр за допомогою функції Product(x);

   3) кількість цифр 7 із використанням функції Digit7(x).

 

   Контрольні приклади

        1) m= 129807,  n=8555    =>    k1= 6,  k2=4
                                                          d1= 0,  d2= 8
                                                          f1= 1,  f2= 0
       2) m= 77753, n= 29712468    =>  k1= 5,  k2= 8
                                                             d1= 1,  d2= 768
                                                             f1= 3,  f2= 1


В системі: гості - (1); користувачі - (0)