Меню

Total people price где ошибка

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

<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Tip Calculator</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
<link rel="stylesheet" href="styles.css"  />
  </head>
  <body>
    <form>

      <div class="mb-3">
        <label  class="total form-label">Total Bill</label>
        <input type="number" class="form-control" id="bill" >
        <div id="emailHelp" class="form-text">Please Enter your bill in numbers only.</div>
      </div>
      <div class="mb-3">
        <label class="form-label">Number of People</label>
        <input type="number" class="form-control" id="people">
      </div>
      <!-- <div class="mb-3 form-check">
        <input type="checkbox" class="form-check-input" id="exampleCheck1">
        <label class="form-check-label" for="exampleCheck1">Check me out</label>
      </div> -->
      <select class="form-select" id="myValues">
        <option value="30%">Select the service quality</option>
    <option value="30%">30% - Outstanding</option>
    <option value="20%">20% - Good</option>
    <option value="15%">15% - it was okay</option>
    <option value="5%">5% - Terrible</option>
  </select>
      <button type="submit" class="btn btn-primary">Calculate</button>
    </form>
    <div id="totalTip">
                       <sup>$</sup><span class="form-label" id="tip">0.00</span>
                       <small id="each">each</small>

               </div>

  </body>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="tip.js" charset="utf-8"></script>
</html>

Это код javascript

var a = $("#bill").val();
var b = $("#people").val();
var c = $("#myValues").find('option:selected').val();

$(".btn").click(function () {
$("#tip").html(calculateTip(a, b, c));
});
function calculateTip (total, people, select) {
     var d = total/people;
     var e = d*(select/100);
     return e;
}
// calculateTip(a, b, c)

1 ответ

Пара вопросов выделяется.

  1. вы определяете a, b и c в начале скрипта, прежде чем пользователь взаимодействует с формой. Затем мы должны определить внутри обработчик кликов, таким образом они будут оцениваться и устанавливаться при нажатии кнопки.

  2. Вы можете добавить e.preventDefault(); внутри обработчика кликов, чтобы остановить поведение отправки по умолчанию (т. е. остановить попытку отправки формы)

  3. Вам не нужно искать выбранный параметр для #myValues, вы можете получить доступ к текущему выбранному значению напрямую через $("#myValues").val()

  4. Вы захотите удалить % из значений параметров, чтобы вы могли выполнять математические операции со значением (вы получите NaN с % на месте, что делает значение строкой.

  5. Вы, вероятно, захотите добавить .toFixed(2) к результату подсказки, чтобы заставить его округляться и усекаться до 2 знаков после запятой, чтобы избежать длинных повторяющихся десятичных знаков.

$(".btn").click(function(e) {
  e.preventDefault();
  let a = $("#bill").val();
  let b = $("#people").val();
  let c = $("#myValues").val();
  let tip = calculateTip(a, b, c);
  $("#tip").html(tip);
});

function calculateTip(total, people, select) {
  var d = total / people;
  var e = d * (select / 100);
  return e.toFixed(2);
}
<html lang="en" dir="ltr">

  <head>
    <meta charset="utf-8">
    <title>Tip Calculator</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
    <link rel="stylesheet" href="styles.css" />
  </head>

  <body>
    <form>

      <div class="mb-3">
        <label class="total form-label">Total Bill</label>
        <input type="number" class="form-control" id="bill">
        <div id="emailHelp" class="form-text">Please Enter your bill in numbers only.</div>
      </div>
      <div class="mb-3">
        <label class="form-label">Number of People</label>
        <input type="number" class="form-control" id="people">
      </div>
      <!-- <div class="mb-3 form-check">
        <input type="checkbox" class="form-check-input" id="exampleCheck1">
        <label class="form-check-label" for="exampleCheck1">Check me out</label>
      </div> -->
      <select class="form-select" id="myValues">
        <option value="30">Select the service quality</option>
        <option value="30">30% - Outstanding</option>
        <option value="20">20% - Good</option>
        <option value="15">15% - it was okay</option>
        <option value="5">5% - Terrible</option>
      </select>
      <button type="submit" class="btn btn-primary">Calculate</button>
    </form>
    <div id="totalTip">
      <sup>$</sup><span class="form-label" id="tip">0.00</span>
      <small id="each">each</small>

    </div>

  </body>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

</html>


1

Wesley Smith
10 Сен 2022 в 11:01

Поскольку вы можете вычислить значение — в этом случае довольно легко — оно избыточно. Вы почти никогда не должны хранить избыточные данные. Это означает, что в каждом месте, где вы обновляете либо цену, либо людей, вы должны обязательно обновлять общую сумму. Если вы забудете сделать это хотя бы в одном месте, данные теперь будут несогласованными. Итак, предположим, теперь у вас есть запись, в которой говорится, что цена = 10 долларов, люди = 3, итого = 40 долларов. Если у вас есть разные программы, отображающие информацию по-разному — разные итоги, подмножества или что-то еще — пользователь может получить разные ответы на один и тот же вопрос в зависимости от того, как он его задал. Хотя плохо получить неправильный ответ, еще хуже получить иногда правильный, а иногда неправильный ответ, потому что тогда может быть непонятно, как решить проблему. Я имею в виду, что если я вижу, что какой-то клиент показывает 2 человек вместо 3, предположительно есть какой-то экран, на который я могу перейти, заменить 2 на 3, нажать «Сохранить» или что-то еще, и это исправлено. Но если там написано, что 10 долларов умножить на 2 человека = 30 долларов, куда мне обратиться, чтобы это исправить? Как?

Вы можете сказать, что запись обновляется только в одном месте, так что проблем нет. Но это сегодня. Что, если завтра вы или какой-то другой программист добавите новую функцию для обновления другого рода?

Сейчас я работаю над системой, которая заполнена избыточными данными. Основная информация о каждом продукте нашей компании хранится в таблице «item». Для каждой единицы на складе у нас есть запись о запасе, и вместо того, чтобы просто ссылаться на запись о товаре, они копируют все данные для каждой единицы запаса. Когда товар продается, мы копируем все данные в запись о продаже. Если что-то возвращается, копируем все данные в запись возврата. И т. д. и т. д. для нескольких других типов записей. Это вызывает бесконечные проблемы. Однажды у нас возникла проблема, когда пользователь запустил запрос на поиск элементов с определенными характеристиками, а в список попаданий попали элементы, не соответствующие критериям поиска. Почему? Поскольку запрос находит все записи номенклатур, соответствующие критериям поиска, он пытается сопоставить эти записи номенклатур с записями запасов по номеру детали… но некоторые записи номенклатуры не соответствуют записи номенклатуры по другим критериям по разным причинам. Сейчас я работаю над устранением проблемы, из-за которой данные о затратах не всегда правильно копируются из записей о запасах в записи о продажах. Я бы хотел просто перепроектировать базу данных, чтобы удалить все избыточные данные, но это был бы огромный проект.

Конечно, бывают случаи, когда потери производительности при пересчете части данных слишком велики. Например, если вам нужно прочитать тысячи записей транзакций для расчета текущего баланса, и вы хотите регулярно отображать текущий баланс, это может быть слишком большой нагрузкой на производительность, и вам лучше хранить его избыточно. Но я бы очень медлил с такими вещами. Убедитесь, что это действительно серьезная проблема с производительностью.

Умножение двух чисел, которые есть в записи, которую вы уже читаете? Ни за что. Я не могу себе представить, что это вызовет какие-либо проблемы с производительностью. Если ваш механизм базы данных не может умножить два числа за крошечный процент времени, необходимого для чтения записи, приобретите новый механизм базы данных.

Anderey

0 / 0 / 0

Регистрация: 22.01.2022

Сообщений: 6

1

Исправь ошибки в работе программы

02.02.2022, 21:36. Показов 3540. Ответов 1

Метки нет (Все метки)


При покупке билета на самолёт доступны дополнительные услуги:
— страховка на время перелёта — 500 руб;
— питание на борту — 700 руб.

Начальная цена билета без услуг — 2000 рублей. Исправь ошибки в программе с функцией, предлагающей услуги и возвращающей финальную стоимость билета.

Python
1
2
3
4
5
6
7
8
9
10
11
12
buy_ticket(price):
    ans = input('Желаете оформить страховку на время перелёта?')
    if ans == 'да':
       price += 500
    ans = input('Желаете приобрести питание на борту?')
    if ans == 'да':
       price += 700
    return
 
price = 2000
final_price = buy_ticket()
print('Стоимость билета с учётом услуг:', final_price)

Миниатюры

Исправь ошибки в работе программы
 

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Ultraevs

50 / 34 / 17

Регистрация: 10.01.2022

Сообщений: 110

02.02.2022, 23:54

2

Лучший ответ Сообщение было отмечено Anderey как решение

Решение

ну что-то подобное

Python
1
2
3
4
5
6
7
8
9
10
11
def buy_ticket(price):
    ans = input('Желаете оформить страховку на время перелёта?: ')
    if ans == 'да':
        price += 500
    ans = input('Желаете приобрести питание на борту?: ')
    if ans == 'да':
        price += 700
    return price
 
 
print('Стоимость билета с учётом услуг:', buy_ticket(2000))



1



Задание​

Исследуйте список order: найдите общую стоимость всех пицц. Результат выведите на экран.

Результат выдает такую ошибку:

Traceback (most recent call last):
File «main.py», line 48, in <module>
print(dumps(filtered_order, indent=4, ensure_ascii=False)) # печатаем список с помощью dumps()
NameError: name ‘dumps’ is not defined

Python:

order = [
    {
        'item': 'Пицца Маргарита', # название позиции
        'category': 'пицца', # категория товара
        'quantity': 2, # количество в заказе
        'comment': 'Побольше сыра, пожалуйста!', # комментарий к заказу
        'price': 320 # стоимость одной единицы товара
    },
    {
        'item': 'Пицца с ветчиной',
        'category': 'пицца',
        'quantity': 1,
        'comment': '',
        'price': 410
    },
    {
        'item': 'Pepsi 1 л',
        'category': 'напитки',
        'quantity': 3,
        'comment': '',
        'price': 75
    },
    {
        'item': 'Сок яблочный 0.5 л',
        'category': 'напитки',
        'quantity': 1,
        'comment': '',
        'price': 80
    },
    {
        'item': 'Круассан с сыром',
        'category': 'выпечка',
        'quantity': 2,
        'comment': '',
        'price': 130
    }
]

# напишите ваш код здесь
filtered_order = []
filtered_order = 0

for item in order:
    if item['category'] == 'пицца':
        filtered_order += item['price']

print('Результат:')
print(dumps(filtered_order, indent=4, ensure_ascii=False)) # печатаем список с помощью dumps()

Одного аргумента функции часто не хватает для сложных задач. В этом уроке мы приведём пример такой задачи и покажем, как делать функции с несколькими аргументами. Начнём с того, что напишем функцию для печати на экране первых 5 элементов таблицы. def print_top5(data): print(‘Название | Год | Рейтинг | Длина | Бюджет | Сборы |’) print(‘———————————————————————————‘) for row in data[:5]: print(‘{: <35} | {} | {: >7.2f} | {: >5} | {: >6.1f} | {: >6.1f} |’.format( row[0], row[1], row[2], row[3], row[5], row[6])) Обратите внимание на отступы для цикла в коде функции. Мы вложили цикл в её тело, и поэтому тело такого цикла набирается с отступом уже не в 4 пробела, а в 8. Теперь вызовем нашу функцию: она печатает на экране топовые (по рейтингу и бюджету) фильмы. oscar_data = [ [‘Форма воды’, 2017, 6.914, 123, [‘фантастика’, ‘драма’], 19.4, 195.243464], [‘Лунный свет’, 2016, 6.151, 110, [‘драма’], 1.5, 65.046687], [‘В центре внимания’, 2015, 7.489, 129, [‘драма’, ‘криминал’, ‘история’], 20.0, 88.346473], [‘Бёрдмэн’, 2014, 7.604, 119, [‘драма’, ‘комедия’], 18.0, 103.215094], [’12 лет рабства’, 2013, 7.71, 133, [‘драма’, ‘биография’, ‘история’], 20.0, 178.371993], [‘Операция «Арго»‘, 2012, 7.517, 120, [‘триллер’, ‘драма’, ‘биография’], 44.5, 232.324128], [‘Артист’, 2011, 7.942, 96, [‘драма’, ‘мелодрама’, ‘комедия’], 15.0, 133.432856], [‘Король говорит!’, 2010, 7.977, 118, [‘драма’, ‘биография’, ‘история’], 15.0, 414.211549], [‘Повелитель бури’, 2008, 7.298, 126, [‘триллер’, ‘драма’, ‘военный’, ‘история’], 15.0, 49.230772], [‘Миллионер из трущоб’, 2008, 7.724, 120, [‘драма’, ‘мелодрама’], 15.0, 377.910544], [‘Старикам тут не место’, 2007, 7.726, 122, [‘триллер’, ‘драма’, ‘криминал’], 25.0, 171.627166], [‘Отступники’, 2006, 8.456, 151, [‘триллер’, ‘драма’, ‘криминал’], 90.0, 289.847354], [‘Столкновение’, 2004, 7.896, 108, [‘триллер’, ‘драма’, ‘криминал’], 6.5, 98.410061], [‘Малышка на миллион’, 2004, 8.075, 132, [‘драма’, ‘спорт’], 30.0, 216.763646], [‘Властелин колец: Возвращение Короля’, 2003, 8.617, 201, [‘фэнтези’, ‘драма’, ‘приключения’], 94.0, 1119.110941], [‘Чикаго’, 2002, 7.669, 113, [‘мюзикл’, ‘комедия’, ‘криминал’], 45.0, 306.776732], [‘Игры разума’, 2001, 8.557, 135, [‘драма’, ‘биография’, ‘мелодрама’], 58.0, 313.542341], [‘Гладиатор’, 2000, 8.585, 155, [‘боевик’, ‘драма’, ‘приключения’], 103.0, 457.640427], [‘Красота по-американски’, 1999, 7.965, 122, [‘драма’], 15.0, 356.296601], [‘Влюбленный Шекспир’, 1998, 7.452, 123, [‘драма’, ‘мелодрама’, ‘комедия’, ‘история’], 25.0, 289.317794], [‘Титаник’, 1997, 8.369, 194, [‘драма’, ‘мелодрама’], 200.0, 2185.372302], [‘Английский пациент’, 1996, 7.849, 155, [‘драма’, ‘мелодрама’, ‘военный’], 27.0, 231.976425], [‘Храброе сердце’, 1995, 8.283, 178, [‘драма’, ‘военный’, ‘биография’, ‘история’], 72.0, 210.409945], [‘Форрест Гамп’, 1994, 8.915, 142, [‘драма’, ‘мелодрама’], 55.0, 677.386686], [‘Список Шиндлера’, 1993, 8.819, 195, [‘драма’, ‘биография’, ‘история’], 22.0, 321.265768], [‘Непрощенный’, 1992, 7.858, 131, [‘драма’, ‘вестерн’], 14.4, 159.157447], [‘Молчание ягнят’, 1990, 8.335, 114, [‘триллер’, ‘криминал’, ‘детектив’, ‘драма’, ‘ужасы’], 19.0, 272.742922], [‘Танцующий с волками’, 1990, 8.112, 181, [‘драма’, ‘приключения’, ‘вестерн’], 22.0, 424.208848], [‘Шофёр мисс Дэйзи’, 1989, 7.645, 99, [‘драма’], 7.5, 145.793296], [‘Человек дождя’, 1988, 8.25, 133, [‘драма’], 25.0, 354.825435], ] print(‘# Самый высокий рейтинг’) print() oscar_data.sort(key=lambda row: row[2], reverse=True) print_top5(oscar_data) print() print() print(‘# Самый большой бюджет’) print() oscar_data.sort(key=lambda row: row[5], reverse=True) print_top5(oscar_data) print() print() # Самый высокий рейтинг Название | Год | Рейтинг | Длина | Бюджет | Сборы | ——————————————————————————— Форрест Гамп | 1994 | 8.91 | 142 | 55.0 | 677.4 | Список Шиндлера | 1993 | 8.82 | 195 | 22.0 | 321.3 | Властелин колец: Возвращение Короля | 2003 | 8.62 | 201 | 94.0 | 1119.1 | Гладиатор | 2000 | 8.59 | 155 | 103.0 | 457.6 | Игры разума | 2001 | 8.56 | 135 | 58.0 | 313.5 | # Самый большой бюджет Название | Год | Рейтинг | Длина | Бюджет | Сборы | ——————————————————————————— Титаник | 1997 | 8.37 | 194 | 200.0 | 2185.4 | Гладиатор | 2000 | 8.59 | 155 | 103.0 | 457.6 | Властелин колец: Возвращение Короля | 2003 | 8.62 | 201 | 94.0 | 1119.1 | Отступники | 2006 | 8.46 | 151 | 90.0 | 289.8 | Храброе сердце | 1995 | 8.28 | 178 | 72.0 | 210.4 | Улучшим нашу функцию: пусть она сама сортирует таблицу. Чтобы это сделать, пропишем в коде ещё один аргумент (количество теоретически не ограничено). Этим вторым аргументом станет индекс столбца, по которому мы хотим сортировать. Указывают его в скобках после первого аргумента. Пусть в объявлении функции этот параметр будет называться column: def print_top5_by_column(data, column): … Тогда для сортировки по столбцу с индексом 3 функцию нужно вызвать так: print_top5_by_column(oscar_data, 3) Обратите внимание: мы переименовали функцию в соответствии с её целью. Имена аргументов тоже понятно описывают, для чего те нужны. Напишем тело функции и обновим код печати таблицы: def print_top5_by_column(data, column): data.sort(key=lambda row: row[column], reverse=True) print(‘Название | Год | Рейтинг | Длина | Бюджет | Сборы |’) print(‘———————————————————————————‘) for row in data[:5]: print(‘{: <35} | {} | {: >7.2f} | {: >5} | {: >6.1f} | {: >6.1f} |’.format( row[0], row[1], row[2], row[3], row[5], row[6])) Используем её, чтобы вывести информацию и по другим столбцам: oscar_data = [ [‘Форма воды’, 2017, 6.914, 123, [‘фантастика’, ‘драма’], 19.4, 195.243464], [‘Лунный свет’, 2016, 6.151, 110, [‘драма’], 1.5, 65.046687], [‘В центре внимания’, 2015, 7.489, 129, [‘драма’, ‘криминал’, ‘история’], 20.0, 88.346473], [‘Бёрдмэн’, 2014, 7.604, 119, [‘драма’, ‘комедия’], 18.0, 103.215094], [’12 лет рабства’, 2013, 7.71, 133, [‘драма’, ‘биография’, ‘история’], 20.0, 178.371993], [‘Операция «Арго»‘, 2012, 7.517, 120, [‘триллер’, ‘драма’, ‘биография’], 44.5, 232.324128], [‘Артист’, 2011, 7.942, 96, [‘драма’, ‘мелодрама’, ‘комедия’], 15.0, 133.432856], [‘Король говорит!’, 2010, 7.977, 118, [‘драма’, ‘биография’, ‘история’], 15.0, 414.211549], [‘Повелитель бури’, 2008, 7.298, 126, [‘триллер’, ‘драма’, ‘военный’, ‘история’], 15.0, 49.230772], [‘Миллионер из трущоб’, 2008, 7.724, 120, [‘драма’, ‘мелодрама’], 15.0, 377.910544], [‘Старикам тут не место’, 2007, 7.726, 122, [‘триллер’, ‘драма’, ‘криминал’], 25.0, 171.627166], [‘Отступники’, 2006, 8.456, 151, [‘триллер’, ‘драма’, ‘криминал’], 90.0, 289.847354], [‘Столкновение’, 2004, 7.896, 108, [‘триллер’, ‘драма’, ‘криминал’], 6.5, 98.410061], [‘Малышка на миллион’, 2004, 8.075, 132, [‘драма’, ‘спорт’], 30.0, 216.763646], [‘Властелин колец: Возвращение Короля’, 2003, 8.617, 201, [‘фэнтези’, ‘драма’, ‘приключения’], 94.0, 1119.110941], [‘Чикаго’, 2002, 7.669, 113, [‘мюзикл’, ‘комедия’, ‘криминал’], 45.0, 306.776732], [‘Игры разума’, 2001, 8.557, 135, [‘драма’, ‘биография’, ‘мелодрама’], 58.0, 313.542341], [‘Гладиатор’, 2000, 8.585, 155, [‘боевик’, ‘драма’, ‘приключения’], 103.0, 457.640427], [‘Красота по-американски’, 1999, 7.965, 122, [‘драма’], 15.0, 356.296601], [‘Влюбленный Шекспир’, 1998, 7.452, 123, [‘драма’, ‘мелодрама’, ‘комедия’, ‘история’], 25.0, 289.317794], [‘Титаник’, 1997, 8.369, 194, [‘драма’, ‘мелодрама’], 200.0, 2185.372302], [‘Английский пациент’, 1996, 7.849, 155, [‘драма’, ‘мелодрама’, ‘военный’], 27.0, 231.976425], [‘Храброе сердце’, 1995, 8.283, 178, [‘драма’, ‘военный’, ‘биография’, ‘история’], 72.0, 210.409945], [‘Форрест Гамп’, 1994, 8.915, 142, [‘драма’, ‘мелодрама’], 55.0, 677.386686], [‘Список Шиндлера’, 1993, 8.819, 195, [‘драма’, ‘биография’, ‘история’], 22.0, 321.265768], [‘Непрощенный’, 1992, 7.858, 131, [‘драма’, ‘вестерн’], 14.4, 159.157447], [‘Молчание ягнят’, 1990, 8.335, 114, [‘триллер’, ‘криминал’, ‘детектив’, ‘драма’, ‘ужасы’], 19.0, 272.742922], [‘Танцующий с волками’, 1990, 8.112, 181, [‘драма’, ‘приключения’, ‘вестерн’], 22.0, 424.208848], [‘Шофёр мисс Дэйзи’, 1989, 7.645, 99, [‘драма’], 7.5, 145.793296], [‘Человек дождя’, 1988, 8.25, 133, [‘драма’], 25.0, 354.825435], ] print(‘# Самый высокий рейтинг’) print() print_top5_by_column(oscar_data, 2) print() print() print(‘# Самый большой бюджет’) print() print_top5_by_column(oscar_data, 5) print() print() print(‘# Самые большие сборы’) print() print_top5_by_column(oscar_data, 6) print() print() print(‘# Самая большая длина’) print() print_top5_by_column(oscar_data, 3) print() print() # Самый высокий рейтинг Название | Год | Рейтинг | Длина | Бюджет | Сборы | ——————————————————————————— Форрест Гамп | 1994 | 8.91 | 142 | 55.0 | 677.4 | Список Шиндлера | 1993 | 8.82 | 195 | 22.0 | 321.3 | Властелин колец: Возвращение Короля | 2003 | 8.62 | 201 | 94.0 | 1119.1 | Гладиатор | 2000 | 8.59 | 155 | 103.0 | 457.6 | Игры разума | 2001 | 8.56 | 135 | 58.0 | 313.5 | # Самый большой бюджет Название | Год | Рейтинг | Длина | Бюджет | Сборы | ——————————————————————————— Титаник | 1997 | 8.37 | 194 | 200.0 | 2185.4 | Гладиатор | 2000 | 8.59 | 155 | 103.0 | 457.6 | Властелин колец: Возвращение Короля | 2003 | 8.62 | 201 | 94.0 | 1119.1 | Отступники | 2006 | 8.46 | 151 | 90.0 | 289.8 | Храброе сердце | 1995 | 8.28 | 178 | 72.0 | 210.4 | # Самые большие сборы Название | Год | Рейтинг | Длина | Бюджет | Сборы | ——————————————————————————— Титаник | 1997 | 8.37 | 194 | 200.0 | 2185.4 | Властелин колец: Возвращение Короля | 2003 | 8.62 | 201 | 94.0 | 1119.1 | Форрест Гамп | 1994 | 8.91 | 142 | 55.0 | 677.4 | Гладиатор | 2000 | 8.59 | 155 | 103.0 | 457.6 | Танцующий с волками | 1990 | 8.11 | 181 | 22.0 | 424.2 | # Самая большая длина Название | Год | Рейтинг | Длина | Бюджет | Сборы | ——————————————————————————— Властелин колец: Возвращение Короля | 2003 | 8.62 | 201 | 94.0 | 1119.1 | Список Шиндлера | 1993 | 8.82 | 195 | 22.0 | 321.3 | Титаник | 1997 | 8.37 | 194 | 200.0 | 2185.4 | Танцующий с волками | 1990 | 8.11 | 181 | 22.0 | 424.2 | Храброе сердце | 1995 | 8.28 | 178 | 72.0 | 210.4 | TASK_1_3 Мы продолжили улучшать функцию print_top5_by_column() и добавили в неё возможность изменять порядок сортировки. Для этого мы дописали ещё один аргумент reverse. Он имеет такой же смысл, как аргумент reverse метода sort(): принимает значение False, если нужно сортировать в обычном порядке, и True — если в обратном. После добавления нового аргумента написанные ранее вызовы функций перестали работать. Проблема в том, что функция теперь принимает три аргумента, а мы передаём только два. Исправьте эти вызовы, передав им третий аргумент (он будет равен True, так как мы по-прежнему хотим видеть бо́льшие значения наверху). Затем выведите на экран 5 самых коротких фильмов из таблицы (третьим аргументом будет False, чтобы наверху были короткие фильмы, а не длинные). SOLUTION oscar_data = [ [‘Форма воды’, 2017, 6.914, 123, [‘фантастика’, ‘драма’], 19.4, 195.243464], [‘Лунный свет’, 2016, 6.151, 110, [‘драма’], 1.5, 65.046687], [‘В центре внимания’, 2015, 7.489, 129, [‘драма’, ‘криминал’, ‘история’], 20.0, 88.346473], [‘Бёрдмэн’, 2014, 7.604, 119, [‘драма’, ‘комедия’], 18.0, 103.215094], [’12 лет рабства’, 2013, 7.71, 133, [‘драма’, ‘биография’, ‘история’], 20.0, 178.371993], [‘Операция «Арго»‘, 2012, 7.517, 120, [‘триллер’, ‘драма’, ‘биография’], 44.5, 232.324128], [‘Артист’, 2011, 7.942, 96, [‘драма’, ‘мелодрама’, ‘комедия’], 15.0, 133.432856], [‘Король говорит!’, 2010, 7.977, 118, [‘драма’, ‘биография’, ‘история’], 15.0, 414.211549], [‘Повелитель бури’, 2008, 7.298, 126, [‘триллер’, ‘драма’, ‘военный’, ‘история’], 15.0, 49.230772], [‘Миллионер из трущоб’, 2008, 7.724, 120, [‘драма’, ‘мелодрама’], 15.0, 377.910544], [‘Старикам тут не место’, 2007, 7.726, 122, [‘триллер’, ‘драма’, ‘криминал’], 25.0, 171.627166], [‘Отступники’, 2006, 8.456, 151, [‘триллер’, ‘драма’, ‘криминал’], 90.0, 289.847354], [‘Столкновение’, 2004, 7.896, 108, [‘триллер’, ‘драма’, ‘криминал’], 6.5, 98.410061], [‘Малышка на миллион’, 2004, 8.075, 132, [‘драма’, ‘спорт’], 30.0, 216.763646], [‘Властелин колец: Возвращение Короля’, 2003, 8.617, 201, [‘фэнтези’, ‘драма’, ‘приключения’], 94.0, 1119.110941], [‘Чикаго’, 2002, 7.669, 113, [‘мюзикл’, ‘комедия’, ‘криминал’], 45.0, 306.776732], [‘Игры разума’, 2001, 8.557, 135, [‘драма’, ‘биография’, ‘мелодрама’], 58.0, 313.542341], [‘Гладиатор’, 2000, 8.585, 155, [‘боевик’, ‘драма’, ‘приключения’], 103.0, 457.640427], [‘Красота по-американски’, 1999, 7.965, 122, [‘драма’], 15.0, 356.296601], [‘Влюбленный Шекспир’, 1998, 7.452, 123, [‘драма’, ‘мелодрама’, ‘комедия’, ‘история’], 25.0, 289.317794], [‘Титаник’, 1997, 8.369, 194, [‘драма’, ‘мелодрама’], 200.0, 2185.372302], [‘Английский пациент’, 1996, 7.849, 155, [‘драма’, ‘мелодрама’, ‘военный’], 27.0, 231.976425], [‘Храброе сердце’, 1995, 8.283, 178, [‘драма’, ‘военный’, ‘биография’, ‘история’], 72.0, 210.409945], [‘Форрест Гамп’, 1994, 8.915, 142, [‘драма’, ‘мелодрама’], 55.0, 677.386686], [‘Список Шиндлера’, 1993, 8.819, 195, [‘драма’, ‘биография’, ‘история’], 22.0, 321.265768], [‘Непрощенный’, 1992, 7.858, 131, [‘драма’, ‘вестерн’], 14.4, 159.157447], [‘Молчание ягнят’, 1990, 8.335, 114, [‘триллер’, ‘криминал’, ‘детектив’, ‘драма’, ‘ужасы’], 19.0, 272.742922], [‘Танцующий с волками’, 1990, 8.112, 181, [‘драма’, ‘приключения’, ‘вестерн’], 22.0, 424.208848], [‘Шофёр мисс Дэйзи’, 1989, 7.645, 99, [‘драма’], 7.5, 145.793296], [‘Человек дождя’, 1988, 8.25, 133, [‘драма’], 25.0, 354.825435], ] def print_top5_by_column(data, column, reverse): data.sort(key=lambda row: row[column], reverse=reverse) print(‘Название | Год | Рейтинг | Длина | Бюджет | Сборы |’) print(‘———————————————————————————‘) for row in data[:5]: print(‘{: <35} | {} | {: >7.2f} | {: >5} | {: >6.1f} | {: >6.1f} |’.format( row[0], row[1], row[2], row[3], row[5], row[6])) # обновите код вывода топовых значений print(‘# Самый высокий рейтинг’) print() print_top5_by_column(oscar_data, 2, True) print() print() print(‘# Самый большой бюджет’) print() print_top5_by_column(oscar_data, 5, True) print() print() print(‘# Самые большие сборы’) print() print_top5_by_column(oscar_data, 6,True) print() print() print(‘# Самая большая длина’) print() print_top5_by_column(oscar_data, 3,True) print() print() # добавьте вывод самых коротких фильмов print(‘# Самая маленькая длина’) print() print_top5_by_column(oscar_data, 3,False) print() print() TASK_2_3 Напишите функцию print_profit(), которая вычисляет и выводит на экран прибыль, полученную от фильма. Прибыль вычисляется как разность сборов (выручки) и бюджета. Функция должна принимать значения бюджета и сборов как аргументы (первый аргумент — бюджет, второй аргумент — сборы). Названия для аргументов выберите самостоятельно. Результат должен печататься на экране с двумя знаками после запятой и без сопроводительного текста. В прекоде мы привели пример использования этой функции. SOLUTION def print_profit(budjet,revenue): profit=revenue-budjet print(«{:.2f}».format(profit)) print(«Прибыль от фильма «Титаник»:») print_profit(200.0, 2185.372302) TASK_3_3 Напишите функцию print_mean(), которая считает и выводит на экран среднее значение по заданному столбцу. Функция должна принимать два аргумента —data (таблицу) и column (номер столбца). Результат должен печататься на экране с двумя знаками после запятой и без сопроводительного текста. После создания функции можно посчитать средние значения по большинству столбцов. Мы уже сделали это в прекоде. SOLUTION oscar_data = [ [‘Форма воды’, 2017, 6.914, 123, [‘фантастика’, ‘драма’], 19.4, 195.243464], [‘Лунный свет’, 2016, 6.151, 110, [‘драма’], 1.5, 65.046687], [‘В центре внимания’, 2015, 7.489, 129, [‘драма’, ‘криминал’, ‘история’], 20.0, 88.346473], [‘Бёрдмэн’, 2014, 7.604, 119, [‘драма’, ‘комедия’], 18.0, 103.215094], [’12 лет рабства’, 2013, 7.71, 133, [‘драма’, ‘биография’, ‘история’], 20.0, 178.371993], [‘Операция «Арго»‘, 2012, 7.517, 120, [‘триллер’, ‘драма’, ‘биография’], 44.5, 232.324128], [‘Артист’, 2011, 7.942, 96, [‘драма’, ‘мелодрама’, ‘комедия’], 15.0, 133.432856], [‘Король говорит!’, 2010, 7.977, 118, [‘драма’, ‘биография’, ‘история’], 15.0, 414.211549], [‘Повелитель бури’, 2008, 7.298, 126, [‘триллер’, ‘драма’, ‘военный’, ‘история’], 15.0, 49.230772], [‘Миллионер из трущоб’, 2008, 7.724, 120, [‘драма’, ‘мелодрама’], 15.0, 377.910544], [‘Старикам тут не место’, 2007, 7.726, 122, [‘триллер’, ‘драма’, ‘криминал’], 25.0, 171.627166], [‘Отступники’, 2006, 8.456, 151, [‘триллер’, ‘драма’, ‘криминал’], 90.0, 289.847354], [‘Столкновение’, 2004, 7.896, 108, [‘триллер’, ‘драма’, ‘криминал’], 6.5, 98.410061], [‘Малышка на миллион’, 2004, 8.075, 132, [‘драма’, ‘спорт’], 30.0, 216.763646], [‘Властелин колец: Возвращение Короля’, 2003, 8.617, 201, [‘фэнтези’, ‘драма’, ‘приключения’], 94.0, 1119.110941], [‘Чикаго’, 2002, 7.669, 113, [‘мюзикл’, ‘комедия’, ‘криминал’], 45.0, 306.776732], [‘Игры разума’, 2001, 8.557, 135, [‘драма’, ‘биография’, ‘мелодрама’], 58.0, 313.542341], [‘Гладиатор’, 2000, 8.585, 155, [‘боевик’, ‘драма’, ‘приключения’], 103.0, 457.640427], [‘Красота по-американски’, 1999, 7.965, 122, [‘драма’], 15.0, 356.296601], [‘Влюбленный Шекспир’, 1998, 7.452, 123, [‘драма’, ‘мелодрама’, ‘комедия’, ‘история’], 25.0, 289.317794], [‘Титаник’, 1997, 8.369, 194, [‘драма’, ‘мелодрама’], 200.0, 2185.372302], [‘Английский пациент’, 1996, 7.849, 155, [‘драма’, ‘мелодрама’, ‘военный’], 27.0, 231.976425], [‘Храброе сердце’, 1995, 8.283, 178, [‘драма’, ‘военный’, ‘биография’, ‘история’], 72.0, 210.409945], [‘Форрест Гамп’, 1994, 8.915, 142, [‘драма’, ‘мелодрама’], 55.0, 677.386686], [‘Список Шиндлера’, 1993, 8.819, 195, [‘драма’, ‘биография’, ‘история’], 22.0, 321.265768], [‘Непрощенный’, 1992, 7.858, 131, [‘драма’, ‘вестерн’], 14.4, 159.157447], [‘Молчание ягнят’, 1990, 8.335, 114, [‘триллер’, ‘криминал’, ‘детектив’, ‘драма’, ‘ужасы’], 19.0, 272.742922], [‘Танцующий с волками’, 1990, 8.112, 181, [‘драма’, ‘приключения’, ‘вестерн’], 22.0, 424.208848], [‘Шофёр мисс Дэйзи’, 1989, 7.645, 99, [‘драма’], 7.5, 145.793296], [‘Человек дождя’, 1988, 8.25, 133, [‘драма’], 25.0, 354.825435], ] def print_mean(data, column): total = 0 for row in data: # чтобы получить нужное значение, напишите row[column] total += row[column] mean = total / len(data) print(‘{:.2f}’.format(mean)) print(‘Средний рейтинг: ‘, end=») print_mean(oscar_data, 2) print(‘Средняя длина: ‘, end=») print_mean(oscar_data, 3) print(‘Средний бюджет: ‘, end=») print_mean(oscar_data, 5) print(‘Средние сборы: ‘, end=») print_mean(oscar_data, 6)

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Tom clancy s splinter cell blacklist ошибка
  • Total commander ошибка при удалении файлов windows 10