Introdução
Esta seção discute a criação do seu primeiro programa, a execução do interpretador e algumas noções básicas de depuração (debugging).
This tutorial is from open-source community. Access the source code
Esta seção discute a criação do seu primeiro programa, a execução do interpretador e algumas noções básicas de depuração (debugging).
Programas Python sempre são executados dentro de um interpretador.
O interpretador é uma aplicação "baseada em console" que normalmente é executada a partir de um shell de comando.
python3
Python 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
Programadores experientes geralmente não têm problemas em usar o interpretador dessa maneira, mas não é tão amigável para iniciantes. Você pode estar usando um ambiente que fornece uma interface diferente para Python. Tudo bem, mas aprender a executar o terminal Python ainda é uma habilidade útil de se conhecer.
Quando você inicia o Python, você obtém um modo interativo onde pode experimentar.
Se você começar a digitar instruções, elas serão executadas imediatamente. Não há ciclo de edição/compilação/execução/depuração (edit/compile/run/debug).
>>> print('hello world')
hello world
>>> 37*42
1554
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
>>>
Este chamado read-eval-print-loop (ou REPL) é muito útil para depuração e exploração.
PARE: Se você não conseguir descobrir como interagir com o Python, pare o que está fazendo e descubra como fazê-lo. Se você estiver usando uma IDE, ela pode estar escondida atrás de uma opção de menu ou outra janela. Muitas partes deste curso assumem que você pode interagir com o interpretador.
Vamos dar uma olhada mais de perto nos elementos do REPL:
>>> é o prompt do interpretador para iniciar uma nova instrução.... é o prompt do interpretador para continuar uma instrução. Insira uma linha em branco para terminar a digitação e executar o que você digitou.O prompt ... pode ou não ser exibido, dependendo do seu ambiente. Para este curso, ele é mostrado como espaços em branco para facilitar o corte/colagem de exemplos de código.
O sublinhado _ armazena o último resultado.
>>> 37 * 42
1554
>>> _ * 2
3108
>>> _ + 50
3158
>>>
Isso só é verdade no modo interativo. Você nunca usa _ em um programa.
Programas são colocados em arquivos .py.
## hello.py
print('hello world')
Você pode criar um arquivo hello.py no diretório /home/labex/project usando seu editor de texto favorito.
Para executar um programa, execute-o no terminal com o comando python. Por exemplo, na linha de comando Unix:
$ python hello.py
hello world
bash %
Ou no shell do Windows:
C:\SomeFolder>hello.py
hello world
C:\SomeFolder>c:\python36\python hello.py
hello world
Observação: No Windows, pode ser necessário especificar um caminho completo para o interpretador Python, como c:\python36\python. No entanto, se o Python estiver instalado da maneira usual, você poderá simplesmente digitar o nome do programa, como hello.py.
Vamos resolver o seguinte problema:
Em uma manhã, você sai e coloca uma nota de dólar na calçada perto da Sears Tower em Chicago. A cada dia subsequente, você sai e dobra o número de notas. Quanto tempo leva para a pilha de notas exceder a altura da torre?
Aqui está uma solução para criar um arquivo sears.py no diretório /home/labex/project:
## sears.py
bill_thickness = 0.11 * 0.001 ## Meters (0.11 mm)
sears_height = 442 ## Height (meters)
num_bills = 1
day = 1
while num_bills * bill_thickness < sears_height:
print(day, num_bills, num_bills * bill_thickness)
day = day + 1
num_bills = num_bills * 2
print('Number of days', day)
print('Number of bills', num_bills)
print('Final height', num_bills * bill_thickness)
Quando você o executa, você obtém a seguinte saída:
$ python3 sears.py
1 1 0.00011
2 2 0.00022
3 4 0.00044
4 8 0.00088
5 16 0.00176
6 32 0.00352
...
21 1048576 115.34336
22 2097152 230.68672
Number of days 23
Number of bills 4194304
Final height 461.37344
Usando este programa como guia, você pode aprender vários conceitos centrais importantes sobre Python.
Um programa Python é uma sequência de declarações (statements):
a = 3 + 4
b = a * 2
print(b)
Cada declaração é terminada por uma nova linha. As declarações são executadas uma após a outra até que o controle atinja o final do arquivo.
Comentários são textos que não serão executados.
a = 3 + 4
## This is a comment
b = a * 2
print(b)
Comentários são denotados por # e se estendem até o final da linha.
Uma variável é um nome para um valor. Você pode usar letras (minúsculas e maiúsculas) de a a z, bem como o caractere underscore _. Números também podem fazer parte do nome de uma variável, exceto como o primeiro caractere.
height = 442 ## valid
_height = 442 ## valid
height2 = 442 ## valid
2height = 442 ## invalid
Variáveis não precisam ser declaradas com o tipo do valor. O tipo está associado ao valor no lado direito, não ao nome da variável.
height = 442 ## An integer
height = 442.0 ## Floating point
height = 'Really tall' ## A string
Python é tipado dinamicamente. O "tipo" percebido de uma variável pode mudar à medida que um programa é executado, dependendo do valor atual atribuído a ela.
Python é sensível a case. Letras maiúsculas e minúsculas são consideradas letras diferentes. Estas são todas variáveis diferentes:
name = 'Jake'
Name = 'Elwood'
NAME = 'Guido'
As instruções da linguagem são sempre em letras minúsculas.
while x < 0: ## OK
WHILE x < 0: ## ERROR
A instrução while executa um laço (loop).
while num_bills * bill_thickness < sears_height:
print(day, num_bills, num_bills * bill_thickness)
day = day + 1
num_bills = num_bills * 2
print('Number of days', day)
As instruções indentadas abaixo do while serão executadas enquanto a expressão após o while for true.
A indentação é usada para denotar grupos de instruções que pertencem juntas. Considere o exemplo anterior:
while num_bills * bill_thickness < sears_height:
print(day, num_bills, num_bills * bill_thickness)
day = day + 1
num_bills = num_bills * 2
print('Number of days', day)
A indentação agrupa as seguintes instruções como as operações que se repetem:
print(day, num_bills, num_bills * bill_thickness)
day = day + 1
num_bills = num_bills * 2
Como a instrução print() no final não está indentada, ela não pertence ao laço (loop). A linha em branco é apenas para legibilidade. Ela não afeta a execução.
O único requisito do Python é que a indentação dentro do mesmo bloco seja consistente. Por exemplo, isto é um erro:
while num_bills * bill_thickness < sears_height:
print(day, num_bills, num_bills * bill_thickness)
day = day + 1 ## ERROR
num_bills = num_bills * 2
A instrução if é usada para executar uma condição:
if a > b:
print('Computer says no')
else:
print('Computer says yes')
Você pode verificar múltiplas condições adicionando verificações extras usando elif.
if a > b:
print('Computer says no')
elif a == b:
print('Computer says yes')
else:
print('Computer says maybe')
A função print produz uma única linha de texto com os valores passados.
print('Hello world!') ## Prints the text 'Hello world!'
Você pode usar variáveis. O texto impresso será o valor da variável, não o nome.
x = 100
print(x) ## Prints the text '100'
Se você passar mais de um valor para print, eles são separados por espaços.
name = 'Jake'
print('My name is', name) ## Print the text 'My name is Jake'
print() sempre coloca uma nova linha no final.
print('Hello')
print('My name is', 'Jake')
Isso imprime:
Hello
My name is Jake
A nova linha extra pode ser suprimida:
print('Hello', end=' ')
print('My name is', 'Jake')
Este código agora imprimirá:
Hello My name is Jake
Para ler uma linha de entrada digitada pelo usuário, use a função input():
name = input('Enter your name:')
print('Your name is', name)
input imprime um prompt para o usuário e retorna sua resposta. Isso é útil para pequenos programas, exercícios de aprendizado ou depuração simples. Não é amplamente usado para programas reais.
pass (pass statement)Às vezes, você precisa especificar um bloco de código vazio. A palavra-chave pass é usada para isso.
if a > b:
pass
else:
print('Computer says false')
Isso também é chamado de declaração "no-op" (operação nula). Ela não faz nada. Serve como um espaço reservado para declarações, possivelmente a serem adicionadas posteriormente.
Este é o primeiro conjunto de exercícios onde você precisa criar arquivos Python e executá-los. A partir deste ponto, presume-se que você está editando arquivos no diretório ~/project/. Para ajudá-lo a localizar o local apropriado, um número de arquivos iniciais vazios foram criados com os nomes de arquivo apropriados. Procure o arquivo bounce.py que é usado no primeiro exercício.
Uma bola de borracha é solta de uma altura de 100 metros e, cada vez que atinge o chão, ela quica de volta para 3/5 da altura da qual caiu. Escreva um programa bounce.py que imprima uma tabela mostrando a altura dos primeiros 10 quiques.
Aqui está uma solução:
## bounce.py
height = 100
bounce = 1
while bounce <= 10:
height = height * (3 / 5)
print(bounce, round(height, 4))
bounce += 1
Seu programa deve criar uma tabela que se pareça com isto:
1 60.0
2 36.0
3 21.599999999999998
4 12.959999999999999
5 7.775999999999999
6 4.6655999999999995
7 2.7993599999999996
8 1.6796159999999998
9 1.0077695999999998
10 0.6046617599999998
Nota: Você pode limpar um pouco a saída se usar a função round(). Tente usá-la para arredondar a saída para 4 dígitos.
1 60.0
2 36.0
3 21.6
4 12.96
5 7.776
6 4.6656
7 2.7994
8 1.6796
9 1.0078
10 0.6047
O seguinte fragmento de código contém código do problema da Torre Sears. Ele também contém um erro.
## sears.py
bill_thickness = 0.11 * 0.001 ## Meters (0.11 mm)
sears_height = 442 ## Height (meters)
num_bills = 1
day = 1
while num_bills * bill_thickness < sears_height:
print(day, num_bills, num_bills * bill_thickness)
day = days + 1
num_bills = num_bills * 2
print('Number of days', day)
print('Number of bills', num_bills)
print('Final height', num_bills * bill_thickness)
Copie e cole o código que aparece acima em um novo programa chamado sears.py. Quando você executar o código, receberá uma mensagem de erro que fará com que o programa trave, assim:
Traceback (most recent call last):
File "sears.py", line 10, in <module>
day = days + 1
NameError: name 'days' is not defined
Ler mensagens de erro é uma parte importante do código Python. Se seu programa travar, a última linha da mensagem de traceback é a razão real pela qual o programa travou. Acima disso, você deve ver um fragmento do código-fonte e, em seguida, um nome de arquivo e número de linha identificadores.
Parabéns! Você concluiu o laboratório "A First Program". Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.