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

Калькулятор с сохранением результата в файл ( разбитый на модули) / Calculator with preservation results to a file (divided into modules)

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

/

Hello everyone! Today I want to tell you about the show and the next evolution of my calculator, now I'm in it added a function of storing the calculation result to a file and the program crashed into modules - which I think makes it very easy to read and edit to add new functionality.



  • Первый модуль - он же модуль запуска программы. 

В нем присутствуют 3 переменных value, digit, digit2 и строка обращения к модулю calculatingresult.calculating_saving_result, вводятся через input 3 значения и передаются на обработку в модуль inputvalue.

Удобный вариант просмотра кода моей программы сохранен тут  http://pastie.org/10064233

/

  • The first module - aka the launcher program.

It contains three variables value, digit, digit2 and string handling module calculatingresult.calculating_saving_result, entered by input values 3 and transferred to the processing module inputvalue.

Convenient way to view my program code stored here http://pastie.org/10064233


form_start_calc.py

import inputvalue
import calculatingresult
FILE_NAME = 'data.txt'

print("select the action and enter the number of action in the field = 1 - addition,")
print("2 - subtraction, 3 - Multiply, 4 - division, 5 - involution")

value = inputvalue.input_value(int,"number of action","message_error")
digit = inputvalue.input_value(float,"enter the first number","message_error")
digit2 = inputvalue.input_value(float, "Enter the second number: ", "message_error2")


calculatingresult.calculating_saving_result (value,digit,digit2)



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

Удобный вариант просмотра кода моей программы сохранен тут http://pastie.org/10064243

/

  • The second module - it is designed for input variables and error checking.
These variables are transmitted from the first module, then there is a processing input.

Convenient way to view my program code stored here http://pastie.org/10064243


inputvalue.py


import calculatingresult


def input_value(type_value, message, message_error):
    while True:
        try:
            return type_value(input(message))
        except (TypeError, ValueError):
            print(message_error)


  • Третий модуль -  этот код занимается вычислением значений и записью в файл.
Файл для сохранения  "data.txt" который находится в корневой папке программы, мы передаем сюда значения после обработки в предыдущем модуле, переменная value сравнивается в цикле if-elif-else для выбора действия - после произведенных подсчетов, результат сохраняется в файл.

FILE_NAME = 'data.txt' - тут мы переменной назначаем название файла куда будет идти сохранение.

file_calculation = open (FILE_NAME, 'a')  - здесь мы открываем файл для для чтение с флагом 'a' - открытие на до запись, информация добавляется в конец файла.

 file_calculation.write (str(r_addition)) - тут мы с помощью команды write  непосредственно записываем данные в открытый файл.  В скобках указана переменная - результат вычислений.
   file_calculation.close() - закрываем файл ( это необходимо выполнять обязательно ).


Удобный вариант просмотра кода моей программы сохранен тут http://pastie.org/10064251

/

  • The third module - the code deals with the computation of values ​​and writing to a file.
File to save the "data.txt" which is located in the root directory of the program, we give here the values ​​after treatment in the previous module, the variable value is compared in a series of if-elif-else to select action - after making the calculations, the result is stored in the file.

FILE_NAME = 'data.txt' - then we assign a variable name of the file where you want to go save.

file_calculation = open (FILE_NAME, 'a') - here we are opening a file for reading with the flag 'a' - opening up to the record, the information is added to the end of the file.

 file_calculation.write (str (r_addition)) - here we are with the command write directly to write data to an open file. In brackets the variable - the result of calculations.
   file_calculation.close () - close the file (it is necessary to perform required).


Convenient way to view my program code stored here http://pastie.org/10064251

calculatingresult.py
import inputvalue

FILE_NAME = 'data.txt'

def calculating_saving_result (r_value, r_digit, r_digit2):
    file_calculation = open (FILE_NAME, 'a')

    print(r_digit, r_digit2)


    if r_value==1:
        r_addition = r_digit + r_digit2
        file_calculation.write (str(r_addition))
    elif r_value==2:
        r_subtracting = r_digit - r_digit2
        file_calculation.write (str(r_subtracting))
    elif r_value==3:
        r_multiplication = r_digit * r_digit2
        file_calculation.write (str(r_multiplication))
    elif r_value==4:
        r_division = r_digit / r_digit2
        file_calculation.write (str(r_division))
    elif r_value==5:
        r_involution = r_digit ** r_digit2
        file_calculation.write (str(r_involution))
    else:
        file_calculation.write ('fail')
        #print("fail")
    file_calculation.close()



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

Средства python для работы с файлами / Tools python to work with files

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

Первая  - для ввода имени и фамилии.
Вторая - для ввода возраста.

Еще я не смог разобраться как выполнить вывод информации из файл на экран.

Удобный вариант просмотра кода моей программы сохранен тут http://pastie.org/10049967


/


Good afternoon, thinking about how to keep the result of the actions of the previous program, a calculator, I decided to look into the principles of open and edit text files in python.
I got not quite what they wanted - the problem occurs immediately after creation functions. Write to a file I could, but how to do that would be introduced between the data gaps were and how to make automatic translation to a new line I do not understand.
The following code, what I got - 2 function.

The first - to enter a first and last name.
The second - to enter the age.

I still could not figure out how to perform output of information from the file to the screen.

Convenient way to view my program code stored here http://pastie.org/10049967

def input_name (type_name,message,message_error):
    while True:
        try:
            a=open('data.txt', 'a').write(input(message))
            return a
        except(ValueError):
            print(message_error)

name=input_name (str,'enter the name','message_error')
lastname=input_name (str,'enter the last name','message_error')

def input_age (type_age,message,message_error):
    while True:
        try:
            b=open('data.txt', 'a').write(input(message))
            return b
        except (TypeError, ValueError):
            print(message_error)

age=input_age(int,'enter age','message_error')


Открытие файла 

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

Запись в файл

Встроенная метод write - с помощью него мы можем записать в файл информацию введенную например с клавиатуры.

/

Opening a File

Built-in open function opens a file in this function is the set of parameters to open a file, I use the option 'a' - opening up to the record, the information is added to the end of the file.

Filing

Built-in method write - with the help of it we can write to the file such information entered from the keyboard.

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

Калькулятор / Calculator

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

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

Первая функция под названием input_value - я ее создал для выбора действия, при вводе числа - выбирается действие с числами.
Вторая и третья функция под названием input_digit и input_digit2 - они созданы для ввода в по программу чисел над которыми производятся операции.

После функций следует блок непосредственных расчетов - техника выбора основывается на сравнивании значения введенного в первой функции с значением заданным в цикле if-elif-else.

Удобный вариант просмотра кода моей программы сохранен тут http://pastie.org/10037571

/

Hello everyone, today I want to tell you about my kind of calculator, it does little action - this addition, subtraction, multiplication, division.
Developing further and I will add new computing activities.

Question of the day - this is how to optimize the code? Can I use my version of one function instead of three?
In the program I use an exception handler to check
TypeError - check does not match the data type.
ValueError - check for an incorrect value.

The first function called input_value - I created it to select actions when entering numbers - select action with numbers.
The second and third feature called input_digit and input_digit2 - they are made to enter in to the program numbers on which operations are performed.

After the function block should direct payments - selection technique is based on a comparison between the values ​​entered in the first function with the value specified in the loop if-elif-else.

Convenient way to view my program code stored here http://pastie.org/10037571


print("select the action and enter the number of action in the field = 1 - addition,")
print("2 - subtraction, 3 - Multiply, 4 - division")

def input_value(message, message_error):
    while True:
        try:
            value = int (input(message))
            return value
        except (TypeError, ValueError):
            print(message_error)

value = input_value("number of action","message_error")


def input_digit(message3, message_error3):
    while True:
        try:
            digit= float(input(message3))
            return digit
        except (TypeError, ValueError):
            print(message_error3)

digit = input_digit("enter the first number","message_error3")


def input_digit2(message2, message_error2):
    while True:
        try:
            digit2 = int(input(message2))
            return digit2
        except (TypeError, ValueError):
            print(message_error2)

digit2 = input_digit2("Enter the second number","message_error2")


if value==1:
    addition = digit + digit2
    print (addition)
elif value==2:
    subtracting = digit - digit2
    print(subtracting)
elif value==3:
    multiplication = digit * digit2
    print(multiplication)
elif value==4:
    division = digit / digit2
    print (division)
else:
    print("fail")

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

Python, Конструкция try - except для обработки исключений / Python, structure try - except for exception handling

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

Как сделать возвращение к к началу если произошла ошибка ? 

код выложен на внешний ресурс для удобного просмотра - не смог встроить сюда :( 

/

Today I want to share with you my example structure exceptions, the example is simple and does not show the full functionality - as I myself have not yet fully understood.
The problem is that while I handle the error can not go back to the previous step. For example I enter the product price (enter the numbers you need to do), and I enter the letters - an error is detected, but instead of what would bring me back to the same input data, the program continues to run on.

How to make a return to the beginning if an error occurs?

code is laid out to an external resource for easy viewing - could not build here :(

try:
    a=float(input("the price of 1 kg of sweets: "))
except (TypeError, ValueError):
    print("error, enter the number")
try:
    c=float(input("How many grams of sweets weigh ? "))
except (TypeError, ValueError):
    print("error, enter the number")
try:
    b=float(input("the price of 1 kg of biscuits: "))
except (TypeError, ValueError):
    print("error, enter the number")
try:
    d=float(input("How many grams weigh cookies ? "))
except (TypeError, ValueError):
    print("error, enter the number")

x=(a/1000)*c     #cost calculation
y=(b/1000)*d    #cost calculation
z=x+y                  #the sum of the prices of purchases

print ("The cost of",c,"grams of sweets:",x,"rubles")
print ("The cost of",d,"grams of biscuits:",y,"rubles")
print ("The total purchase price of:",z,"rubles")

Расскажу про  эту конструкцию, объявления блока конструкции обязательно начинает с try: 
в ней так же должна присутствовать функция exept -  может принимать различные значения в зависимости от того на какую ошибку мы проверяем. Эта конструкция так называемая защита от дурака.

Общий вид:

try:
 
  операторы
except():
 
  блок обработки исключений

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

\

Tell us about this  structure, ad  structure unit necessarily begins with try:
it must also attend a function exept - can take on different values depending on at what a mistake we check. This  structure is the so-called foolproof.

General appearance:

try:
    operators
except ():
    exception handling block


In the program I used two key TypeError exception handling and ValueError.
TypeError - check does not match the data type.
ValueError - check for an incorrect value.

Due to these keys I check in your program correctly entered input data - the price of candy, cookies and weight purchases.
In theory, if something is not right then introduced works display a warning about an invalid value. In my program it works, but not as I would like.

вторник, 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!