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

Одного аргумента функции часто не хватает для сложных задач. В этом уроке мы приведём пример такой задачи и покажем, как делать функции с несколькими аргументами. Начнём с того, что напишем функцию для печати на экране первых 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)

я написал код к задаче на языке пайтон, в целом он работает но не совсем корректно нужно его подправить. я не знаю в чем ошибка
код:
price = int(input(‘Стоимость товара (0 — покупок больше нет):’))
total_price = 0
while price != 0:
total_price += price
price = int(input(‘Стоимость товара (0 — покупок больше нет):’))

print(‘Стоимость всех покупок:’, total_price)
Условие задачи:
Программа последовательно принимает стоимость каждого товара, пока не будет введён 0.
Затем она выводит сумму покупок на экран с текстом «Стоимость всех покупок:». Каждый запрос стоимости товара сопровождается подсказкой: «Стоимость товара (0 — покупок больше нет):».
Программа должна работать как на картинке.
какой должен быть результат:
Стоимость товара (0 — покупок больше нет):
250
Стоимость товара (0 — покупок больше нет):
320
Стоимость товара (0 — покупок больше нет):
0
Стоимость всех покупок: 570

I’ve written some Java code, as shown below, but it isn’t behaving as I expected. Right near the bottom, starting from the line if (upgrade == "Y"). I did a test, I entered Y but this line did not execute. Could you please help me figure out why this behaviour occurred?

import java.io.*;

class P4
{
public static int get_price(String day_of_week, String age_group)
{
    int price=0;

    if (day_of_week == "WD")
    {
        if (age_group == "adult")
            price = 66;

        else if (age_group == "child")
            price=48;

        else
            price = 32;
    }
    else
    {
        if (age_group == "adult")
            price = 72;

        else if (age_group == "child")
            price=52;

        else
            price = 36;
    }

    return price;
}

public static void main(String[] args)
{
    String adult2=null;
    String child2=null;
    String senior2=null;
    String day_of_week=null;
    String upgrade=null;


    System.out.println("Enter Number of Adult Ticket:");
    BufferedReader adult1 = new BufferedReader(new InputStreamReader(System.in));
    try
    {
        adult2 = adult1.readLine();     
    } 
    catch (IOException e) {
        System.out.println("Error!");
        System.exit(1);
    }

    System.out.println("Enter Number of Child Ticket:");
    BufferedReader child1 = new BufferedReader(new InputStreamReader(System.in));
    try
    {
        child2 = child1.readLine();     
    } 
    catch (IOException e) {
        System.out.println("Error!");
        System.exit(1);
    }

    System.out.println("Enter Number of Senior Ticket:");
    BufferedReader senior1 = new BufferedReader(new InputStreamReader(System.in));
    try
    {
        senior2 = senior1.readLine();       
    } 
    catch (IOException e) {
        System.out.println("Error!");
        System.exit(1);
    }

    System.out.println("Choose Weekday or Weekend Pass (WD/WE):");
    BufferedReader day_of_week1 = new BufferedReader(new InputStreamReader(System.in));
    try
    {
        day_of_week = day_of_week1.readLine();      
    } 
    catch (IOException e) {
        System.out.println("Error!");
        System.exit(1);
    }

    System.out.println("Upgrade to Express Pass (Y/N):");
    BufferedReader upgrade1 = new BufferedReader(new InputStreamReader(System.in));
    try
    {
        upgrade = upgrade1.readLine();      
    } 
    catch (IOException e) {
        System.out.println("Error!");
        System.exit(1);
    }

    int adult = Integer.parseInt(adult2);
    int child = Integer.parseInt(child2);
    int senior = Integer.parseInt(senior2);

    int total_a = adult * get_price(day_of_week, "adult");
    int total_c = child * get_price(day_of_week, "child");
    int total_s = senior * get_price(day_of_week, "senior");

    int total_price = total_a + total_c + total_s;

    int total_people = adult + child + senior;

    int upgrade_price = 0;

    if (upgrade == "Y")
    {
        if (day_of_week == "WD")
        {
            upgrade_price = total_people * 30;
        }
        else
        {
            upgrade_price = total_people * 68;
        }
    }
    else
        upgrade_price = 0;


    int price = upgrade_price + total_price;

    System.out.println("The total price is $" + price);

}}

footy's user avatar

footy

5,78313 gold badges48 silver badges96 bronze badges

asked Jan 20, 2012 at 7:04

Leo Jw's user avatar

2

You cannot compare strings with ==, you need to use equals()

if("Y".equals(upgrade))

(I tend to put the constant first, to handle the case where upgrade == null)

answered Jan 20, 2012 at 7:07

Rolf Rander's user avatar

Rolf RanderRolf Rander

3,22120 silver badges21 bronze badges

0

In java string comparison

    String s = "something", t = "maybe something else";
    if (s == t)      // Legal, but usually WRONG.
    if (s.equals(t)) // RIGHT
    if (s > t)    // ILLEGAL
    if (s.compareTo(t) > 0) // CORRECT>

So in your case, use:

if(upgrade.equals("Y")) { 
      //your codes
}

import java.io.*;

class P4
{
public static int get_price(String day_of_week, String age_group)
{
    int price=0;

    if (day_of_week.equals("WD"))
    {
        if (age_group.equals("adult"))
            price = 66;

        else if (age_group.equals("child"))
            price=48;

        else
            price = 32;
    }
    else
    {
        if (age_group.equals("adult"))
            price = 72;

        else if (age_group.equals("child"))
            price=52;

        else
            price = 36;
    }

    return price;
}

public static void main(String[] args)
{
    String adult2=null;
    String child2=null;
    String senior2=null;
    String day_of_week=null;
    String upgrade=null;


    System.out.println("Enter Number of Adult Ticket:");
    BufferedReader adult1 = new BufferedReader(new InputStreamReader(System.in));
    try
    {
        adult2 = adult1.readLine();     
    } 
    catch (IOException e) {
        System.out.println("Error!");
        System.exit(1);
    }

    System.out.println("Enter Number of Child Ticket:");
    BufferedReader child1 = new BufferedReader(new InputStreamReader(System.in));
    try
    {
        child2 = child1.readLine();     
    } 
    catch (IOException e) {
        System.out.println("Error!");
        System.exit(1);
    }

    System.out.println("Enter Number of Senior Ticket:");
    BufferedReader senior1 = new BufferedReader(new InputStreamReader(System.in));
    try
    {
        senior2 = senior1.readLine();       
    } 
    catch (IOException e) {
        System.out.println("Error!");
        System.exit(1);
    }

    System.out.println("Choose Weekday or Weekend Pass (WD/WE):");
    BufferedReader day_of_week1 = new BufferedReader(new InputStreamReader(System.in));
    try
    {
        day_of_week = day_of_week1.readLine();      
    } 
    catch (IOException e) {
        System.out.println("Error!");
        System.exit(1);
    }

    System.out.println("Upgrade to Express Pass (Y/N):");
    BufferedReader upgrade1 = new BufferedReader(new InputStreamReader(System.in));
    try
    {
        upgrade = upgrade1.readLine();      
    } 
    catch (IOException e) {
        System.out.println("Error!");
        System.exit(1);
    }

    int adult = Integer.parseInt(adult2);
    int child = Integer.parseInt(child2);
    int senior = Integer.parseInt(senior2);

    int total_a = adult * get_price(day_of_week, "adult");
    int total_c = child * get_price(day_of_week, "child");
    int total_s = senior * get_price(day_of_week, "senior");

    int total_price = total_a + total_c + total_s;

    int total_people = adult + child + senior;

    int upgrade_price = 0;

    if (upgrade.equals("Y"))
    {
        if (day_of_week.equals("WD"))
        {
            upgrade_price = total_people * 30;
        }
        else
        {
            upgrade_price = total_people * 68;
        }
    }
    else
        upgrade_price = 0;


    int price = upgrade_price + total_price;

    System.out.println("The total price is $" + price);

}}

answered Jan 20, 2012 at 7:09

footy's user avatar

footyfooty

5,78313 gold badges48 silver badges96 bronze badges

for equality condition in string you need equal method.

use

"Y".equals(upgrade); //is a good idea

instead of

upgrade == "Y"

Since Strings are objects, the equals(Object) method will return true if two Strings have the same objects. The == operator will only be true if two String references point to the same underlying String object. Hence two Strings representing the same content will be equal when tested by the equals(Object) method, but will only by equal when tested with the == operator if they are actually the same object.

refer http://blog.enrii.com/2006/03/15/java-string-equality-common-mistake/

answered Jan 20, 2012 at 7:05

Hemant Metalia's user avatar

Hemant MetaliaHemant Metalia

29.5k18 gold badges72 silver badges91 bronze badges

3

I notised that your update variable is String, thus you should use:

    if (upgrade.compareTo("Y") == 0) {
        //your code
    } 

this is the correct way to compare Strings.

answered Jan 20, 2012 at 7:14

karla's user avatar

karlakarla

4,5065 gold badges34 silver badges39 bronze badges

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()

polly00

0 / 0 / 0

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

Сообщений: 16

1

Рассчитать стоимость билетов

13.11.2022, 00:22. Показов 1032. Ответов 5

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


Студворк — интернет-сервис помощи студентам

Здравствуйте!

Не знаю как реализовать данную задачу, буду благодарна за помощь!

Во второй части программы необходимо реализовать вывод сообщения для кассира в зависимости от возраста группы и рассчитать общую стоимость билетов (ticket_sum)

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
ticket_price = 1000
 
print("Введите ваш возраст")
 
while True:
    age = input()
    if not age.isdigit():
        print("Введите целое число")
    else:
        age = int(age)
        break
 
discount_1_6 = "Не допускаются"
discount_7_12 = "скидка -50% от полной стоимости билета"
discount_13_17 = "скидка -25% от полной стоимости билета"
discount_18_64 = "полная стоимость билета"
discount_65_ = "-50% от полной стоимости билета"
 
def info_about_visitor():
    if age <= 6:
        print(discount_1_6)
    elif age <= 12:
        print(discount_7_12)
    elif age <= 17:
        print(discount_13_17)
    elif age <= 64:
        print(discount_18_64)
    elif age >= 65:
        print(discount_65_)
    else:
        print("Обратитесь к консультанту")
 
# age_dis50 = 50
# age_dis25 = 25
# age_dis0 = 0
 
# ticket_sum = info_about_visitor



0



Programming

Эксперт

94731 / 64177 / 26122

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

Сообщений: 116,782

13.11.2022, 00:22

Ответы с готовыми решениями:

Рассчитать стоимость проданных билетов и выдать ведомость
Создать массив из 5 структур, имеющие следующие поля: номер рейса автобуса, наименование рейса,…

Рассчитать стоимость одной страницы книги и стоимость всего тиража
2.Данные о книге: автор, название, издательство, количество страниц, цена, тираж. Рассчитать…

Определить стоимость билетов
(задание сделать на C++)

Билет на дневной сеанс в кинотеатр стоит 30 к., на вечерний – 60 к….

Определить стоимость билетов
Заказать билеты на фильм, выбрав зал и сеанс. Ввести количество билетов и определить их стоимость с…

Определить суммарную стоимость билетов
Необходимо сделать задачу, пожалуйста!! завтра зачет, а я не успеваю. препод достал! и так уже…

5

Автоматизируй это!

Эксперт Python

7138 / 4434 / 1185

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

Сообщений: 12,899

Записей в блоге: 29

13.11.2022, 09:39

2

polly00, так приведите полный текст задачи, а то не ясно о какой группе речь, вроде 1 возраст спрашиваете

Цитата
Сообщение от polly00
Посмотреть сообщение

def info_about_visitor():

сюда надо надо аргументом передавать эйдж и не принтитить а возвращать строку

остальное сможем помочь при понимании общей картины



0



0 / 0 / 0

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

Сообщений: 16

13.11.2022, 14:02

 [ТС]

3

Поняла, извиняюсь!

Цитата
Сообщение от Welemir1
Посмотреть сообщение

так приведите полный текст задачи, а то не ясно о какой группе речь, вроде 1 возраст спрашиваете

Вот задача:

В дельфинарии действуют правила расчета стоимости билетов:
Возраст от 1 до 6 лет (включительно) — «Не допускаются»
Возраст от 7 до 12 лет (включительно) — «скидка -50% от полной стоимости билета»
Возраст от 13 до 17 лет (включительно) — «скидка -25% от полной стоимости билета»
Возраст от 18 до 64 лет (включительно) — «полная стоимость билета»
Возраст от 65 и старше — «-50% от полной стоимости билета»

Во второй части программы необходимо реализовать вывод сообщения для кассира в зависимости от возраста группы и рассчитать общую стоимость билетов (ticket_sum)



0



Автоматизируй это!

Эксперт Python

7138 / 4434 / 1185

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

Сообщений: 12,899

Записей в блоге: 29

13.11.2022, 14:26

4

Цитата
Сообщение от polly00
Посмотреть сообщение

Во второй части программы

а первая то где? о какой группе речь? нужно ввести количество человек, а потом их возраст?



0



polly00

0 / 0 / 0

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

Сообщений: 16

13.11.2022, 14:30

 [ТС]

5

Цитата
Сообщение от Welemir1
Посмотреть сообщение

так приведите полный текст задачи, а то не ясно о какой группе речь, вроде 1 возраст спрашиваете

Написать программу для кассира в дельфинарии. Описание программы ниже:
1) Вместимость дельфинария (человек) capacity = 50 2) Установленная стоимость полного билета ticket_price = 1000

ЧАСТЬ 1.
3) Экскурсовод приводит группы ОДНОГО ВОЗРАСТА (переменная group_age) с произвольным количеством человек (от 5 до 50) (переменная number_of_people)
Если количество людей от 1 до 4 (включительно) — «Вы не являетесь группой»
Если количество людей от 5 до 50 (включительно) — «Вы являетесь группой»
Если количество людей больше 50 — «У нас нет столько мест. Мы пропустим только 50 человек» (уменьшите переменную number_of_people до 50)

Python
1
2
3
4
5
6
7
8
9
10
11
group_age = 22
number_of_people = int(input("Введите количество людей в группе:"))
 
if number_of_people >= 1 and number_of_people < 5:
    print("Вы не являетесь группой")
elif number_of_people >= 5 and number_of_people < 51:
    print('Вы являетесь группой')
elif number_of_people > 50:
    print("У нас нет столько мест. Мы пропустим только 50 человек")
else:
    print("Обратитесь к консультанту")

4) В дельфинарии действуют правила расчета стоимости билетов:
Возраст от 1 до 6 лет (включительно) — «Не допускаются»
Возраст от 7 до 12 лет (включительно) — «скидка -50% от полной стоимости билета»
Возраст от 13 до 17 лет (включительно) — «скидка -25% от полной стоимости билета»
Возраст от 18 до 64 лет (включительно) — «полная стоимость билета»
Возраст от 65 и старше — «-50% от полной стоимости билета»
Во второй части программы необходимо реализовать вывод сообщения для кассира в зависимости от возраста группы и рассчитать общую стоимость билетов (ticket_sum)

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
ticket_price = 1000
 
print("Введите ваш возраст")
 
while True:
    age = input()
    if not age.isdigit():
        print("Введите целое число")
    else:
        age = int(age)
        break
        
 
if age <= 6:
    print("Не допускаются")
elif age <= 12:
    print("скидка -50% от полной стоимости билета")
elif age <= 17:
    print("скидка -25% от полной стоимости билета")
elif age <= 64:
    print("полная стоимость билета")
elif age >= 65:
    print("-50% от полной стоимости билета")
else:
    print("Обратитесь к консультанту")
 
# age_dis50 = 50
# age_dis25 = 25
# age_dis0 = 0
 
# ticket_sum =



0



Welemir1

Автоматизируй это!

Эксперт Python

7138 / 4434 / 1185

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

Сообщений: 12,899

Записей в блоге: 29

13.11.2022, 14:43

6

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

Решение

polly00, видишь сколько важных условий и все надо клещами вытягивать

вот пример

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
ticket_price = 1000
number_of_people = 10  # c потолка, видимо надо запросить как в 1 чаcти задачи
 
while True:
    age = input('Введите возраст группы: ')
    if not age.isdigit():
        print("Введите целое число!")
    else:
        age = int(age)
        break
 
 
def discount_by_age(age):
    if age <= 6:
        print("Не допускаются")
        return 0
    elif age <= 12 or age >= 65:
        print("скидка -50% от полной стоимости билета")
        return 0.5
    elif age <= 17:
        print("скидка -25% от полной стоимости билета")
        return 0.75
    elif age <= 64:
        print("полная стоимость билета")
        return 1
 
 
def total_price(number_of_people, age):
    return number_of_people * (ticket_price * discount_by_age(age))
 
 
print(total_price(number_of_people, age))



1



Возможно, вам также будет интересно:

  • Total commander ошибка при удалении файлов windows 10
  • Total commander ошибка при передаче продолжить
  • Total commander ошибка при передаче ftp
  • Total commander ошибка перемонтирования андроид
  • Total commander ошибка не удается прочитать файл

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

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