Рубрики
Без рубрики

ДЕНЬ 3 ПРОЕКТ: Простой калькулятор доходов

Добро пожаловать в первый мини-проект в 30 дней серии Python. Для этого проекта мы будем … Теги от 30daysofpython, MaductyPeypeon, Python, начинающие.

Добро пожаловать в первый мини-проект в 30 дней Python ряд. Для этого проекта мы собираемся создавать простое консольное приложение, которое поможет работодателю рассчитать заработок работника в данной неделе.

30 дней Python – это бесплатная серия, которые мы бежали в нашем блоге. Каждый день в течение 30 дней мы учим вас что-то новое о Python (нацелены на начинающих) и дайте вам упражнения. Каждые 3 дня у нас есть мини-проект, и каждые 7 дней немного более крупный проект для вас для завершения!

Если вы не решили Остальная часть дня 3 контента Я бы порекомендовал сделать это, прежде чем попробовать проект. Вы также можете просмотреть предыдущие дни, нажав на ссылку в верхней части этого сообщения в блоге.

Ниже вы найдете краткий момент проекта, а также модельное решение с объяснением. Я бы действительно порекомендовал, чтобы вы дали этому, прежде чем смотреть на решение; Вы получите намного больше из этого, обещаю. Если вы застряли, в этой серии нет ничего плохого, ссылаясь на предыдущие сообщения в этой серии или смотрите на любые заметки, которые вы написали. Это не экзамен!

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

Кратка

Наше приложение должно работать следующим образом:

  1. Пользователь должен быть предоставлен три подсказки, где их просят предоставить другую информацию о сотруднике. Один подсказку должен попросить имя сотрудника, другой должен попросить их почасовую заработную плату, а последний должен спросить, сколько часов сотрудник работал на этой неделе.
  2. Имя сотрудника должно быть обработано для обеспечения того, чтобы он был в определенном формате. Все имена сотрудников должны быть лишены любого избыточного белого пространства и должны быть в титульном случае. Это означает, что каждое слово капитализируется со всеми другими буквами строчными. Например, если работодатель случайно содержит колпаки, и они пишут "Regina George" Имя все равно будет правильно сохранено как "Регина Джордж" Отказ
  3. Общий доход работника на неделю следует рассчитывать путем умножения часов, работающих по ежечасовой заработной плате.
  4. Помните, что любой пользовательский ввод, который мы получаем, будет строка. Хотя мы можем умножать строки, это не будет совсем не делать то, что вы хотите в этом случае. Также стоит помнить, что заработная плата сотрудника или количество часов, которые они работали, не может быть целым числом.
  5. После обработки имени сотрудника и расчета их доходов на неделю, программа должна выводить эту информацию как одну строку. Например, вывод, как это было бы уместно:
Regina George earned $800 this week.

Решение прохождение

Ниже вы найдете прохождение о том, как мы подходим к этой конкретной проблеме. Еще раз, если у вас немного другой, не волнуйтесь!

У нас также есть видео версия, которую вы можете посмотреть здесь :

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

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

name = input("Please enter the employee's name: ")
hourly_wage = input("What is their hourly wage? ")
hours_worked = input("How many hours have they worked this week? ")

Если мы хотим проверить, что вещи работают, мы можем просто распечатать переменные:

print(name)
print(hourly_wage)
print(hours_worked)

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

Один из способов можно сделать, это создать три разных переменных и выполнять различную работу на каждой строке:

name = input("Please enter the employee's name: ")
stripped_name = name.strip()
title_name = stripped_name.title()

Это нормально, но нам не нужно использовать разные имена переменной здесь. Мы не собираемся использовать Имя В его сырой форме, поэтому нам не нужно сохранить его. То же самое для строки, которую мы снизили белое пространство. Мы обеспокоены только конечным продуктом, поэтому мы можем безопасно перезаписать Имя На каждом этапе:

name = input("Please enter the employee's name: ")
name = name.strip()
name = name.title()

Если мы хотим быть действительно кратко, мы можем цепивать различные операции на конце вход Звоните так:

name = input("Please enter the employee's name: ").strip().title()

Причина этого работает, заключается в том, что Python собирается оценить каждый из этих вызовов (которые являются всеми выражениями) один за раз, начиная с левого.

Итак, сначала у нас есть вход вызов. Это собирается оценить в строку до полоса называется.

Давайте представим, что пользователь входит "Регина Джордж" , со всем этим белым пространством вокруг фактического имени. Это то, что мы возвращаемся из Вход так после вход Закончил работу, наша линия кода примерно эквивалентна этому:

name = " rEGINA gEORGE ".strip().title()

Теперь следующая операция для выполнения – это полоса вызов. полоса Также оценивается к новой строке, поэтому мы заканчиваем что-то подобное:

name = "rEGINA gEORGE".title()

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

name = "Regina George"

Теперь, когда имя нашего сотрудника было должным образом обработано, мы можем начать думать о расчете их заработка. К сожалению, мы не сможем сделать это:

name = input("Please enter the employee's name: ").strip().title()
hourly_wage = input("What is their hourly wage? ")
hours_worked = input("How many hours have they worked this week? ")

earnings = hourly_wage * hours_worked

Это даст нам Типеррр :

Traceback (most recent call last):
  File "main.py", line 5, in 
    earnings = hourly_wage * hours_worked
TypeError: can't multiply sequence by non-int of type 'str'

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

Хорошо, давайте изменим часы, работающие на целом и посмотрите, что произойдет:

name = input("Please enter the employee's name: ").strip().title()
hourly_wage = input("What is their hourly wage? ")
hours_worked = input("How many hours have they worked this week? ")

earnings = hourly_wage * int(hours_worked)

print(earnings)

Если вы попытаетесь запустить этот код, вы получите значение, которое вы ввели для почасовой заработной платы, повторяется несколько раз, равных значения, которое вы ввели в течение нескольких часов. Это связано с тем, что умножающие строки целыми числом являются сокращением для выполнения повторного конкатенации строки. "-" * 5 такой же, как "-" + "-" + "-" + "-" + "-" Отказ

Имея это в виду, нам нужно будет преобразовать оба значения числам. Однако вместо преобразования в целые числа мы собираемся преобразовать в плавать, потому что это позволит нам принять неинтегральные значения для заработной платы пользователей или работы. Мы хотим иметь возможность рассчитать 32,5 часа, например, в почасовой заработной плате 13.50.

name = input("Please enter the employee's name: ").strip().title()
hourly_wage = input("What is their hourly wage? ")
hours_worked = input("How many hours have they worked this week? ")

earnings = float(hourly_wage) * float(hours_worked)

Убедитесь, что вы зарабатываете, чтобы проверить свой код. Если Python поднимает некоторые исключения, попробуйте понять, почему они происходят, используя сообщение об ошибке и Traceback.

Одна вещь, которую мы не сможем сделать, это принять заработную плату с символом валюты. Если вы хотите дополнительную задачу, вы можете попытаться выяснить, как сделать это для вашей местной валюты. Возможно, вы захотите посмотреть на документацию для полоса , lstrip и RSTRIP Отказ

Теперь, когда мы написали все логику нашей программы, нам просто нужно выводить информацию для пользователя. Я собираюсь использовать F-String здесь, но вы более чем желате использовать формат или конкатенация строки, если вы предпочитаете. Если вы используете Concatenation, помните, что вы можете только объединять строки!

name = input("Please enter the employee's name: ").strip().title()
hourly_wage = input("What is their hourly wage? ")
hours_worked = input("How many hours have they worked this week? ")

earnings = float(hourly_wage) * float(hours_worked)

print(f"{name} earned ${earnings} this week.")

С этим мы закончили!

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

Как всегда, вы можете найти нас на Раздор Если вам нужна помощь.

Бонусный материал

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

Одним из вариантов является преобразование результата нашего расчета в целое число. Это будет «урезать» поплавок, по сути, вырвало все после десятичной точки. Это, безусловно, выглядит намного лучше, но мы выбрасываем некоторую точность.

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

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

Вот что будет выглядеть наше решение, используя эти специальные варианты форматирования:

name = input("Please enter the employee's name: ").strip().title()
hourly_wage = input("What is their hourly wage? ")
hours_worked = input("How many hours have they worked this week? ")

earnings = float(hourly_wage) * float(hours_worked)

print(f"{name} earned ${earnings:.2f} this week.")

Это все для сегодняшнего проекта! Я надеюсь, что вам понравилось завершив его, и увидев наше решение.

Следуйте за нами в твиттере Для получения дополнительных обновлений, когда мы выпустим новый контент для этой серии!

Счастливое кодирование!

Оригинал: “https://dev.to/tecladocode/day-3-project-a-simple-earnings-calculator-2fn5”