Announcement

Collapse
No announcement yet.

Ответы на домашку по книге Дауни А. Основы Python

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ответы на домашку по книге Дауни А. Основы Python

    До создания форума я вёл блог на тематику программирования и моей учёбы в этом направлении (хобби).
    Но в блоге довольно мало функционала, поэтому переехал сюда.
    В этой теме будут ответы на упражнения, которые даны в книги по программированию: Дауни А "Основы Python"

    Возможно ответы на эти задачи есть в сети интернет, но дополнительные ответы по этой книге, думаю, не будут лишними, и возможно кому то пригодятся.
    Итак, начинаю

  • #2
    Упражнение 1.1 - ответы упускаю, ибо это ознакомительные инструкции с работой с интерпретатором.

    Упражнение 1.2
    Запустите интерпретатор Python и используйте его в качестве калькулятора.
    1. Сколько секунд в 42 минутах и 42 секундах?
    2. Сколько миль в 10 километрах? Подсказка: одна миля равна 1,61 км.
    3. Если вы пробежали 10 километров за 42 минуты 42 секунды, каков
    ваш средний темп бега (время, затраченное на преодоление мили,
    в минутах и секундах)? Какова ваша средняя скорость в милях в час?
    Ответы:

    1.
    >>>42*60+42
    2562

    2
    >>>1.61*10
    16.1

    3
    Сначала узнаю за сколько минут я пробегаю 1 км. Потом перевожу в мили
    >>>42.42/10
    4.242 #время в минутах за 1км
    >>>4.242*1.6
    6.7872 #время в минутах за 1 милю
    >>> 60/6.7872 #узнаю сколько миль пробегу за 1 час
    8.84016973125884 # 8.8 мили пробегу за час

    Задача решена. Думаю верно, пришлось подпрячься, так как школа была окончена уже очень давно )))

    Comment


    • #3
      упражнение 2.1 - опять же упражнения на практику с интерпретатором

      Упражнение 2.2
      Попрактикуйтесь использовать интерпретатор Python в качестве калькулятора.
      1. Объем сферы с радиусом r составляет 4/3× πr3. Каков объем сферы с радиусом 5?

      2. Предположим, что книга стоит 249 рублей 50 копеек, при этом книжный магазин предоставляет скидку в 40%. Стоимость доставки составляет 100 рублей за первый экземпляр и 49 рублей 50 копеек за каждый дополнительный. В какую сумму обойдется закупка 60 экземпляров?

      3. Если я вышел из дома в 6:52 утра и пробежал 1 км в легком темпе (1 км за 8 мин. 15 сек.), потом 3 км в среднем темпе (1 км за 7 мин.12 сек.) и 1 км в легком темпе снова, то во сколько я вернусь домой
      позавтракать?
      1. Программа с вычислением объёма сферы радиусом r

      Code:
      import math #импортируем модуль вычислений
      print('Находим объём сферы')
      print()#пустая строка
      #далее присваиваем переменной введённое значение
      #переводим его в целое значение (int)
      radius=int(input('Введите радиус сферы: '))
      pi=math.pi#присваиваем переменной значени pi
      #присваиваем переменной значение выражения
      v=(4/3)*pi*math.pow(radius,3)
      #можно формулу написать и так
      #v=(4/3)*pi*(radius**3)
      #вывод итогов на экран
      print('Объём сферы с радиусом %s, составляет %s' %(radius,v))
      2. Два варианта решения задачи

      Code:
      #исходные данные
      price=249.50 #цена книги
      skidka=40 #процент скидки
      min_dostavka=100 #цена доставки за 1 книгу
      max_dostavka=49.50 #цена за последующую доставку
      stoimost=(price+min_dostavka)+(price+max_dostavka) *59
      print('Полная стоимость 60 книг с доставкой = ',stoimost)
      print()
      print('Второй вариант для проверки')
      print()
      stoimost=(price+min_dostavka)*60-((min_dostavka-max_dostavka)*59)
      print('Полная стоимость 60 книг с доставкой = ',stoimost)
      Значения совпадают, значит решение верное.

      3. Решение задачи с подвохом, так как надо переводить в минуты и секунды. По идее в интерпретаторе сосчитать не составит труда. но вот написать программу посложнее. Совершив мозговой штурм, решил использовать модуль datetime.timedelta

      Code:
      from datetime import datetime,timedelta,time
      #исходные данные
      time_begun=timedelta(hours=6,minutes=42,seconds=00 ) # Время начало бега
      probeg1=timedelta(minutes=8,seconds=15) # в лёгком темпе время за 1 км сек
      probeg2=timedelta(minutes=7,seconds=12) # в среднем темпе время за 1км в сек но пробежал 3км
      probeg2*=3
      probeg3=probeg1 #снова в лёгком темпе 1 км
      time_all=(probeg1+probeg2+probeg3) #потраченное время на пробежку
      time_end=(time_begun+time_all)
      print('Время потраченное на пробежку = %s, возвращение домой %s'%(time_all,time_end))
      Решение проверил вручную, всё сходится, значит решение верное

      Comment


      • #4
        Упражнение 3.1
        Напишите функцию right_justify(), которая принимает строку s в каче-
        стве параметра и печатает строку с достаточным количеством пробелов
        в начале строки, так чтобы последняя буква строки находилась в столбце 70
        на экране:

        Ответ:

        Code:
        def right_justify(s):
            slovo=70-len(s)#вычисление, с какой позиции печатать слово,чтобы последняя
            #буква была на 70 позиции (70столбец)
            probel=' '*slovo#количество необходимых пробелов(позиций/столбцов) перед словом
            print(probel+s)

        Comment


        • #5
          Упражнение 3.2
          Объект функции — это значение, которое вы можете присвоить переменной
          или передать в качестве аргумента. Например, do_twice() — это функция,
          которая принимает объект функции в качестве аргумента и вызывает его
          дважды:

          def do_twice (f):
          f()
          f()

          Ниже представлен пример, в котором функция do_twice() используется
          для вызова функции print_spam() дважды:

          def print_spam():
          print('спам')
          do_twice(print_spam)

          1. Запишите этот пример в файл скрипта и протестируйте его.
          2. Измените код функции do_twice() так, чтобы она принимала два
          аргумента, объект функции и значение и дважды вызывала функцию,
          передавая значение в качестве аргумента.

          Code:
          def do_twice(f,arg1):
              f(arg1)
              f(arg1)
          def print_spam(s):
              print(s)
          do_twice(print_spam,'znachenie')
          4. Используйте модифицированную версию функции do_twice(), чтобы
          дважды вызвать функцию print_twice(), передав в качестве аргумента
          значение 'спам'.

          Code:
          def do_twice(f,arg1):
              f(arg1)
              f(arg1)
          def print_spam(s):
              print(s)
          do_twice(print_spam,'спам')
          5. Определите новую функцию do_four(), которая принимает объект
          функции и значение и вызывает функцию четыре раза, передавая
          значение в качестве параметра. В теле этой функции должно быть
          только две инструкции, а не четыре.

          тут возможно что то недопонял, так как вызывает функцию всё таки два раза, так как инструкции надо две, хотя ответ печатается как и надо, 4 раза

          Code:
          def print_spam(s):
              print(s)
              print(s)
          def do_four(f,arg2):
              f(arg2)
              f(arg2)
          do_four(print_spam,'znachenie')

          Comment

          Working...
          X