вторник, 10 марта 2015 г.

Решение задач на Python. Часть 2. / Solving problems in Python. Part 2

Всем привет, сегодня я расскажу о небольшой программе написанной мной на выходных, она представляет собой задачу найденную мной в интернете. Я придерживался задания и выполнил как было нужно, но после я пошел дальше и усовершенствовал код.
/
Hello everyone, today I will talk about a small program written by me on the weekends, it is a problem found in the Internet. I stuck to the task and performed as needed, but after I went ahead and improved code.

Изначальный вариант:

Пользователь вводит цены 1 килограмм конфет и 1 килограмм печенья. Найдите стоимость: а) одной покупки из 300 грамм конфет и 400 грамм печенья; б) трех покупок, каждая из 2 килограмм печенья и 1 килограмм 800 грамм конфет.
/
The original version:

The user enters the price of 1 kilogram of sweets and biscuits 1 kilogram. Find the value of: a) a purchase of 300 grams and 400 grams of sweets biscuits; b) Number three, each 2 pounds of biscuits and 1 kilo 800 grams of sweets.

a=float (input("цена 1 кг конфет: "))
b=float (input("цена 1 кг печенья: "))

print ("Стоимость 300 граммов конфет:",(a/1000)*300, "рубля")
print ("Стоимость 400 граммов печенья:",(a/1000)*400, "рубля")
print ("Стоимость трех покупок, каждая из 2 кг печенья и 1 кг 800 г конфет:",((b*2)+a+((a/1000)*800))*3, "рублей " )

Здесь мы используем тип данных float () - для использования чисел с плавающей точкой, за счет этого мы можем рассчитать цену продукта более точно.
Формулу расчета мы встраиваем прямо в вывод, для более короткой записи.
/
Here we use the data type float () - to use floating-point numbers, due to this we can calculate the price of the product more accurately.
Calculation formula we embed directly in the output for a shorter recording.

Измененный  вариант:
Amended version:


a=float (input("цена 1 кг конфет: "))
c=float (input("Сколько взвесить граммов конфет ?"))
b=float (input("цена 1 кг печенья: "))
d=float (input("Сколько взвесить граммов печенья ?"))

x=(a/1000)*c
y=(b/1000)*d
z=x+y

print ("Стоимость",c,"граммов печенья:",x,"рублей")
print ("Стоимость",d,"граммов печенья:",y,"рублей")
print ("Общая стоимость покупки:",z,"рублей")


В моем варианте той же задачи, я использую четыре переменных , две переменных (a,b) для ввода цены за один килограмм и две переменных (c,d) для ввода количества взвешиваемого товара.
В этой программе расчет делается не в поле вывода, а в отдельных переменных.
Вес покупки вводится в тысячах.
Программа будет обновлять и доделываться - планирую внедрить цикл if-else для защиты от ошибок ввода.
/
In my version of the same problem, I use four variables, the two variables (a, b) to enter the price per kilogram and two variables (c, d) to enter the number of the weighing product.
In this program, the calculation is not in the output, and in some variables.
Weight is expressed in thousands of purchase.
The program will update and finish - is planning to introduce a cycle if-else to protect against typing errors.

суббота, 7 марта 2015 г.

Решение задач на Python. Часть 1. / Solving problems in Python. Part 1

Сегодня я хочу начать серию статей о решении задач на Python. Я буду описывать задание и писать решение задачи со скриншотами и объяснениями. 
Большого опыта в программировании у меня нету по этому мы начнем с самых простых задач.

Вычислите значение выражения (a+4b)(a−3b)+a2 при a=2 и b=3 . Ответ для проверки:  -94
\
Today I want to start a series of articles about solving problems in Python. I will describe the task and write the solution of the problem with screenshots and explanations.
Much experience in programming I do not have this, we start with the most simple tasks.

Calculate the value of the expression (a + 4b) (a-3b) + a2 when a = 2 and b = 3. The answer is to check: -94



Как видите это элементарная программа, я сократил количество строчек кода за счет вычислений прямо в функции print (), что позволило не создавать новую ссылку на объект.
\
As you can see is the basic program, I reduced the number of lines of code at the expense of computation directly in the function print (), which allowed not to create a new object reference.

пятница, 6 марта 2015 г.

Строки, разбираемся понемногу. / Line out a little.

Добрый День, проходя очередной курс на codeacademy  мне встретилась задача. Работа со строками мне понравилось и не вызвало у меня много вопросов, я на примере расскажу в чем именно я разобрался.
Нам необходимо написать программу в которой бы буквенная строка вводилась бы с клавиатуры.
Вот собственно и сама программа, если хотите запустите их на своем десктопе. После текста программы я опишу все важные места. 
/
Good Day, passing another course on codeacademy I met the challenge. Working with strings I liked and didn't send me a lot of questions, I for example will tell you what I figured out.
We need to write a program in which the letter string was entered with the keyboard.
This is actually the program itself, if you want to run them on your desktop. After the text of the program I will describe all the important places.


The translation of my text made with google translator.


pyg = "ay"                                            #объявили объект
original = input('Enter a word:')            # Ввод с клавиатуры
if len(original) > 0 and original.isalpha:  # Делаем проверку на пустоту и и буквенный ввод
    word = original.lower()                   # Делаем нижний регистр
    first= word[0]                    # Начинаем с первого символа строки(номера в Python идут с 0)
    new_word = word+first+pyg        # строки складываются и изменяются очень легко
    new_word = word[1:len(word)]+first+pyg  # с номера 1 считая количество символов
    print (new_word)   # выводим результат
else:
    print ("empty")

len()       -  считает длину строки. /  considers the length of the string. 
.isalpha   -  проверяет состоит ли строка из букв. / checks whether a string of letters.
.lower()  - преобразовывает строку к нижнему регистру. /  converts a string to lower case.


Это очень простая программа мне поддалась не сразу, самое сложное было это счетчик начала с символа и проверка количества символов. Мне кажется я разобрался и справился.
Ваши замечания и комментарии!
\
This is a very simple program I succumbed immediately, the most difficult was it counter beginning with the character and checking the number of characters. I think I figured out and did it. 
Your observations and comments!

четверг, 5 марта 2015 г.

Логические операторы в Python.

Питон обладает  тремя логическими операторами типа bool - это and (и) , or (или), not (не).
Далее я расскажу о том как я их применять и как их читать в реальной программе. 
  • Примеры логических взаимоотношений:

"==" - это знак равно, в левой части логическое выражение, а в правой после знака "==" результат действий.


not True == False
False and True == False
True and True == True
False and False == False
True or False == True
True or True == True
False or False == False



Ниже описывается простое выражение равно ли одно другому:

a and b == b and a
a or b == b or a
Для типа int ( 0 ) == False, 
non-zero int == True,

and и or выдают операнд, при котором в данном случае известно, что в результате выйдет
2 and 3 == 3 (известно, что с 2 и 3 - True)
0 and 3 == 0 (заведомо известно, что с 0 - False)
4 or 5 == 4
0 or 5 == 5 (с нулем может быть True и False, с 5 - точно True)

x < y      1, если x меньше y, иначе 0.
x <= y    1, если x меньше или равен y, иначе 0
x > y      1, если x больше y, иначе 0. 
x >= y    1, если x больше или равен y, иначе 0.
x = = y   1, если x равен y, иначе 0.
x != y     0, если x равен y, иначе 1.

  • Пример простой программы с использованием логических операторов:
Какой из вариантов более верный ?





среда, 4 марта 2015 г.

If-elif-else, как это работает?

Инструкция  If-elif-else

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

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

После условий if -else всегда ставится двоеточие (:), это обязательно синтаксис python.



  • С использованием  if-else



x=input()             # Вводим x с клавиатуры
y=input()             # Вводим y с клавиатуры
if x>y:               # Ветвление в зависимости от условия x>y
    print x           # выведет x если условие истинно
else:
    print y           # выведет y если условие ложно
print "Пока!"         # Это сообщение будет выводиться всегда
   
input() - Данная функция позволяет делать ввод с клавиатуры.
print() - Данная функция позволяет делать вывод на экран.

В данном самом просто примере какой можно придумать описана работа инструкции if-else,
после ввода значений мы узнаем, что если x=3, а y=2 . if 3>2 следовательно мы получаем на экране распечатку  "3" (True), а если x=2, а y=3. if 2>3 мы получим второй вариант прохода кода и в выводе это значение "2" (False)


  • С использованием  if-elif-else



 x=input()
     if x==1: 
         print "один"
     elif x==2:
         print "два"
     elif x==3:
         print "три"
     else:
         print "другое число"

Так же как и в предыдущей программе вводим с клавиатуры число, далее начинается ветвление, например вы ввели x=4, знак "== "это обычное "=" которое вы знаете со школы. Приходя в первую инструкцию if идет сравнение 4 == 1, если они не равны то, идем дальше и сравниваем уже в 4==2, тоже не равны, идем дальше 4==3, и опять не равны. Если ваше введенное число не равно ниодному числу из инструкций то программа напечатает на экране "другое число". if -elif - возвращает только True (Истина) - то есть если бы вы ввели x=1, то на первой же инструкции вы получили бы True. Это завершит исполнение инструкции. Когда программа проходит всю инструкцию и выводит "другое число" - это False (Ложь)
Логические операторы
В python используется только три логических операции это and (и), or (или), not (не).
True и False - это тип Boolean (Логический) принимающий только эти два значения.
Про логические операторы и примеры работы программ с ними я опишу в следующем посте.

 

Изучить язык программирования самому, возможно или нет? return True

Выбор языка программирования!

Неделю назад я задался таким вопросом - какой ЯП ? (язык программирования - далее по тексту). Как изучить ЯП ?
После прочтения множества источников, я пришел к выводу что лучшим языком для изучения человеку не связанному с программированием является python. Его положительные и отрицательные стороны вы можете сами найти в сети.

  1. Какой литературой пользоваться ?
  2. Есть ли курсы (офлайн или онлайн) ? 
  3. Существуют ли толковые видео уроки на русском языке? 
  4. Ресурсы позволяющие изучать и развивать навыки программирования ? 
  5. Софт ?
1. В сети я нашел 2 книги подходящие ( имхо) - это Марк Лутц, Изучаем Python (4-е издание)
 и Марк Саммерфилд, Программирование на Python 3 подробное руководство.  
Первой я начал читать Лутца, но прочитав 200 страниц понял, что ничего не понял, после я решил попробовать освоить по Саммерфилду, тут дело идет лучше -  стиль изложения материала намного приятнее(имхо), меньше воды!

2. Вопрос курсов возник сразу,  потому как есть вероятность, что одной или нескольких книг будет мало. В Санкт-Петербурге я нашел  офлайн курсы в ИТМО, Политехе стоимость их около 25 тыс. руб. за 2 месяца обучения - 3 раза в неделю, вечером. Скажу вам обучение сидя за партой в большой аудитории не вызывает радости (имхо). Прочитав отзывы  я пришел к выводу, что там на курсах много текста мало пользы.
Онлайн курсы от школы программирования (http://www.prog-school.ru/) стоят 12 тыс. руб.. Занятия проходят в онлайн режиме,  1 месяц 2 раза в неделю по 2 часа. Почитав отзывы я пришел к выводу, что они мне подходят, но перед этим необходимо прочитать и попытаться осилить хотя бы одну из книг, что я выбрал. 

3. Посмотрев группу в vk =  http://vk.com/proglib  - я обнаружил вот такую серию лекций (https://vk.com/wall-54530371_1075), многие нахваливают эти уроки, но мне они показались не очень наглядными(посмотрел 2 урока). Если обобщить, то большинство лекторов или картавят или читают с учебника. это касается тех курсов, что я находил в сети (имхо).

4.  Для себя я обнаружил что существует такие замечательные сайты как codeacademy.comcheckio.org,  есть еще пара проектов, но я остановлюсь на codeacademy. Мне понравился этот ресурс заданиями и тем, что все объяснения на английском языке. Вас постепенно обучают основам python от элементарного к сложному. Но как по мне тут видимо pyton 3, а компилятор на десктопах уже версии python 3.4, что немного стесняет когда хочешь разобраться в примере или изменить его , на локальной машине.


5. Компилятор для python под свою ОС качать тут https://www.python.org/downloads/  
Существует такой зверь как python portabl, его устанавливают на флеш накопитель и носят с собой со своими проектами, очень удобная вещь в него входят самое главное компилятор и редактор с подсветкой синтаксиса , компилятор и отладчик и другие фичи. Скачать python portabl можно от сюда http://portablepython.com/wiki/Download/.  
На скриншоте показано то что у вас должно получиться после установки.


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

Это наверно очень мало, но я стремлюсь к повышению уровня своих знаний.

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