LINUX.ORG.RU

Python осилятор.

 


1

2

Как я уже писал ранее, решил осилить python. Читаю книжку, параллельно зашел на odesk и посмотрел задачку.

Prompt the user for an amount representing the cost of food. Your program should display the Tip, which is usually 17% of the cost of the meal. You also need to calculate the sales tax, which is 8%. Finally, add up the total, which is the sum of food, tip, and tax.
В общем простая задачка. вот мой кодбыдлокод решения такой задачи:
#!/usr/bin/python
print("Enter cost of food:")
bill = float(input())
print ('Bill =', round(bill))
bill_with_tax = round((bill/100)*8+bill)
#print ('Bill with tax =', (bill_with_tax))
print ('Tax =', round(float(bill/100*8)))
tax_and_tip = round(bill_with_tax/100*17)
print ('Tip =', round(tax_and_tip))
total = bill_with_tax+tax_and_tip
print ('Total bill with tax & tip =', total)
input()
Ну а как теперь из этого сделать конфетку для сдачи клиенту?
т.е не вышлю же я ему просто задание.py



Последнее исправление: Linuxman (всего исправлений: 1)

Ответ на: комментарий от Linuxman

Книжка по какой ветке питона, 2 или 3? Во втором питоне input вычисляет (eval) введенную строку, что очень плохо. А в большинстве дистрибутивов python == python2.

И зачем input() в конце?

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 1)
Ответ на: комментарий от theNamelessOne

И зачем input() в конце?

дабы приложение закрывалось по нажатию Enter, а не сразу после завершения.
Вообще я пишу на 3.
Но поскольку большинство примеров на 2.6,а в книжке примеры чередуются, то не большая путаница в голове возникает - да.

Linuxman
() автор топика
Ответ на: комментарий от Linuxman

дабы приложение закрывалось по нажатию Enter, а не сразу после завершения.

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

calculate-bill | ./tip-tax-total

А лишний input в конце похерит всю идею.

Вообще я пишу на 3.

Можно смотреть sys.version_info и в зависимости от его значения либо завершать программу с сообщением об ошибке, либо предоставлять другой код. Например:

# Version-specific code
if sys.version_info[0] == 2: # Python 2
    input_fun = raw_input
    from __future__ import print_function, division
else: # Python 3
    input_fun = input

# Your code here
bill = float(input_fun())

Ну просто input во втором питоне — действительно моветон.

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 1)
Ответ на: комментарий от theNamelessOne

Если программа будет запускаться даблкликом в офтопике?
Она же выполнится и свернется.
И ни кто не узнает что там насчитано.

Ну просто input во втором питоне — действительно моветон.

Учту :)

Linuxman
() автор топика
Ответ на: комментарий от Linuxman

Если программа будет запускаться даблкликом в офтопике?

Напиши простой shell bat-wrapper, который после запуска твоего скрипта будет вызывать pause.

theNamelessOne ★★★★★
()

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

trashymichael ★★★
()
Ответ на: комментарий от trashymichael

да там python или shell-script
На счет упаковки не срастил.
Он ведь и так работает как исполняемый после +a, а под оффтопиком вообще в 2клик пускается.

Linuxman
() автор топика

Мне почему-то кажется, что они хотят нормальную визуальную программу, а не «моргающее досовское окошко»™

Не знаю, был ли в задании питон. Но для данной задачи явно больше Excel и компания подходят.

anonymoos ★★★★★
()
Последнее исправление: anonymoos (всего исправлений: 1)
Ответ на: комментарий от anonymoos
Skills Required
python shell-scripting

В описании ни чего про GUI нет.
Да и мне пох по большому счету, там 10+ написавших с гуд резюме и портфолио.
Эта «тыщща» рублей уйдет в пользу другого:)

Linuxman
() автор топика
Ответ на: комментарий от Linuxman

ок, а теперь представь сферического заказчика в вакууме с нулячим оффтопиком и попробуй ему объяснить как поставить питон, учитывая что он ниодной программы себе не ставил и вообще у него времени нет

trashymichael ★★★
()
Ответ на: комментарий от border-radius

raw_input() в 3 ветке же убран.

А #!/usr/bin/python тоже, по-твоему, нормально?

А что в нем плохого? Есть не просит.

Linuxman
() автор топика
Ответ на: комментарий от Linuxman

Заказчики обычно сами точно не представляют то, что им нужно, или представляют, но не могут сформулировать. Если бы могли, то это и была бы готовая программа (это к вопросу о точности спецификаций). В общем, я бы уточнил ТЗ (консольное приложение, скрипт для веба, десктопное приложение с инсталятором или без и т.д.). Мне кажется, что здесь много неясных белых пятен, а дьявол, как известно, кроется в деталях. Или ты решаешь чужую задачу просто так для практики?

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

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

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

dave ★★★★★
()
Последнее исправление: dave (всего исправлений: 1)
Ответ на: комментарий от dave

Или ты решаешь чужую задачу просто так для практики?

В большей степени - да. + опыт подготовки решений если вдруг я осилю какой заказ.
Хочу знать во что упаковывают, чем, снабжают ли сопутствующими коментами и документацией.
Да и вообще, вот читаешь, читаешь, а применить то негде.
А так простенькие задачки для практики и + к ЧСВ.

Linuxman
() автор топика

Уникальный Очередной пример скрипта, в котором криво всё, начиная прямо с шебанга.

thesis ★★★★★
()
Ответ на: комментарий от Linuxman

На таких сайтах очень легко понизить ЧСВ и намного. Утрирую, но там могут захотеть, чтобы им написали аналог фейсбука за $100.

dave ★★★★★
()
Ответ на: комментарий от Linuxman

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

dave ★★★★★
()
Ответ на: комментарий от Linuxman

raw_input() в 3 ветке же убран.

3 ветка не нужна.

А что в нем плохого? Есть не просит.

В том, что нужно #!/usr/bin/env python, дабы в питон передались переменные окружения и не было косяков с функциями, их использующими.

border-radius
()
Ответ на: комментарий от f1xmAn

you're doing it wrong. в питонотредах нужно вспоминать про '\n'

anonymous
()
Ответ на: комментарий от dave

Ну я видел просьбу написать бэкдор для Mac OS X и Linux с кучей плюшек на пару листов за <500$.
Ну а в основном там за ~100$ просят различные парсеры web страничек написать для поиска контактов или технологий на которых основаны сайты.

Linuxman
() автор топика

Ну и да, кому не жалко 5 минут:
набросайте идеальную реализацию данного кода с вашей точки зрения.
Я хоть подсмотрю.

Linuxman
() автор топика
Ответ на: комментарий от lazyklimm

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

100.34
Bill = 100
Tax = 8
Tip = 18
Total bill with tax & tip = 127
что тоже не гуд.

Linuxman
() автор топика
Ответ на: комментарий от Linuxman

ох уж этот монолог, в общем то округляю я не обязательно в меньшую :)

Linuxman
() автор топика

чтоб не сыпались ошибки в консоль замени input() на такое:

try:
    input("press ENTER to exit")
except (SyntaxError) as ex:
    pass
MJQ
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.