VS Code é um tipo especial de editor de texto chamado compilador. No topo, você notará um editor de texto. Na parte inferior, você verá um terminal onde pode executar comandos.
No terminal, você pode executar o código hello.py para começar a programar.
No editor de texto acima, você pode digitar print("hello, world")
. Este é um programa canônico famoso que quase todos os programadores escrevem durante seu processo de aprendizado.
Na janela do terminal, você pode executar comandos. Para executar este programa, você precisará mover o cursor para a parte inferior da tela, clicando na janela do terminal. Agora você pode digitar um segundo comando na janela do terminal. Ao lado do símbolo de dólar, digite python hello.py
e pressione a tecla Enter no seu teclado.
Lembre-se de que os computadores realmente só entendem zeros e uns. Portanto, quando você executa python hello.py
, o Python interpretará o texto que você criou em hello.py e o traduzirá nos zeros e uns que o computador pode entender.
O resultado da execução do programa python hello.py
é hello, world
.
Parabéns! Você acabou de criar seu primeiro programa.
Funções são verbos ou ações que o computador ou a linguagem de programação já saberá como executar.
No seu programa hello.py, a função print
sabe como imprimir na janela do terminal.
A função print
aceita argumentos. Neste caso, “hello, world” são os argumentos que a função print
aceita.
Bugs são uma parte natural da programação. Eles são erros, problemas para você resolver! Não desanime! Isso faz parte do processo de se tornar um grande programador.
Imagine que no nosso programa hello.py você digitou acidentalmente print("hello, world"
e notou que esquecemos o )
final necessário pelo compilador. Se eu cometer esse erro de propósito, o compilador exibirá um erro na janela do terminal!
Frequentemente, as mensagens de erro informarão sobre seus erros e fornecerão pistas sobre como corrigi-los. No entanto, haverá muitas vezes em que o compilador não será tão amigável.
Podemos personalizar seu primeiro programa em Python.
No nosso editor de texto em hello.py, podemos adicionar outra função. input
é uma função que aceita um prompt como argumento. Podemos editar nosso código para dizer:
input("What's your name? ")
print("hello, world")
No entanto, essa edição sozinha não permitirá que seu programa exiba o que o usuário digita. Para isso, precisamos introduzir variáveis.
Uma variável é apenas um contêiner para um valor dentro do seu próprio programa.
No seu programa, você pode introduzir sua própria variável editando-o para ler:
name = input("What's your name? ")
print("hello, world")
Note que esse sinal de igual =
no meio de name = input("What's your name? ")
tem um papel especial na programação. Este sinal de igual literalmente atribui o que está à direita ao que está à esquerda. Portanto, o valor retornado por input("What's your name? ")
é atribuído a name
.
Se você editar seu código da seguinte forma, notará um erro:
name = input("What's your name? ")
print("hello, name")
O programa retornará hello, name
na janela do terminal, independentemente do que o usuário digite.
Editando ainda mais nosso código, você poderia digitar:
name = input("What's your name? ")
print("hello,")
print(name)
O resultado na janela do terminal seria:
What's your name? David
hello
David
Estamos chegando mais perto do resultado que podemos desejar!
Você pode aprender mais na documentação do Python sobre tipos de dados.
Comentários são uma maneira dos programadores acompanharem o que estão fazendo em seus programas e até informarem outros sobre suas intenções para um bloco de código. Em resumo, eles são notas para você mesmo e para outros que verão seu código!
Você pode adicionar comentários ao seu programa para poder ver o que ele está fazendo. Você pode editar seu código da seguinte forma:
# Pergunte o nome do usuário
name = input("What's your name? ")
print("hello,")
print(name)
Comentários também podem servir como uma lista de tarefas para você.
Pseudocódigo é um tipo importante de comentário que se torna uma lista de tarefas especial, especialmente quando você não entende como realizar uma tarefa de programação. Por exemplo, no seu código, você pode editar seu código para dizer:
# Pergunte o nome do usuário
name = input("What's your name? ")
# Imprima hello
print("hello,")
# Imprima o nome digitado
print(name)
Podemos editar ainda mais nosso código da seguinte forma:
# Pergunte o nome do usuário
name = input("What's your name? ")
# Imprima hello e o nome digitado
print("hello, " + name)
Acontece que algumas funções aceitam muitos argumentos.
Podemos usar uma vírgula ,
para passar vários argumentos editando nosso código da seguinte forma:
# Pergunte o nome do usuário
name = input("What's your name? ")
# Imprima hello e o nome digitado
print("hello,", name)
O resultado no terminal, se digitarmos “David”, seria hello, David
. Sucesso.
Uma string, conhecida como str
em Python, é uma sequência de texto.
Voltando um pouco no nosso código para o seguinte, houve um efeito colateral visual de ter o resultado aparecendo em várias linhas:
# Pergunte o nome do usuário
name = input("What's your name? ")
print("hello,")
print(name)
Funções aceitam argumentos que influenciam seu comportamento. Se olharmos a documentação para print
, você notará que podemos aprender muito sobre os argumentos que a função print
aceita.
Olhando para essa documentação, você aprenderá que a função print
inclui automaticamente um pedaço de código end='\n'
. Este \n
indica que a função print
criará automaticamente uma quebra de linha quando executada. A função print
aceita um argumento chamado end
e o padrão é criar uma nova linha.
No entanto, podemos tecnicamente fornecer um argumento para end
nós mesmos, de modo que uma nova linha não seja criada!
Podemos modificar nosso código da seguinte forma:
# Pergunte o nome do usuário
name = input("What's your name? ")
print("hello,", end="")
print(name)
Ao fornecer end=""
, estamos sobrescrevendo o valor padrão de end
, de modo que nunca crie uma nova linha após esta primeira instrução print
. Fornecendo o nome como “David”, o resultado na janela do terminal será hello, David
.
Parâmetros, portanto, são argumentos que podem ser aceitos por uma função.
Você pode aprender mais na documentação do Python sobre print
.
Observe como adicionar aspas como parte da sua string é desafiador.print("hello,"friend"")
não funcionará e o compilador exibirá um erro.
Geralmente, há duas abordagens para corrigir isso. Primeiro, você poderia simplesmente mudar as aspas para aspas simples.
Outra abordagem mais comumente usada seria codificar como print("hello, \"friend\"")
. As barras invertidas indicam ao compilador que o caractere seguinte deve ser considerado uma aspa na string e evitar um erro do compilador.
Provavelmente a maneira mais elegante de usar strings seria a seguinte:
# Pergunte o nome do usuário
name = input("What's your name? ")
print(f"hello, {name}")
Note o f
em print(f"hello, {name}")
. Esse f
é um indicador especial para o Python tratar essa string de uma maneira especial, diferente das abordagens anteriores que ilustramos nesta palestra. Espere usar esse estilo de strings com bastante frequência neste curso.
Você nunca deve esperar que seu usuário colabore conforme esperado. Portanto, você precisará garantir que a entrada do usuário seja corrigida ou verificada.
Acontece que as strings têm a capacidade de remover espaços em branco de uma string.
Utilizando o método strip
em name
como name = name.strip()
, removerá todos os espaços em branco à esquerda e à direita da entrada do usuário. Você pode modificar seu código para ser:
# Pergunte o nome do usuário
name = input("What's your name? ")
# Remova espaços em branco da string
name = name.strip()
# Imprima o resultado
print(f"hello, {name}")
Executando este programa, independentemente de quantos espaços você digitar antes ou depois do nome, ele removerá todos os espaços em branco.
Usando o método title
, ele colocará em maiúsculas a primeira letra de cada palavra:
# Pergunte o nome do usuário
name = input("What's your name? ")
# Remova espaços em branco da string
name = name.strip()
# Coloque a primeira letra de cada palavra em maiúscula
name = name.title()
# Imprima o resultado
print(f"hello, {name}")
A essa altura, você pode estar muito cansado de digitar python
repet
idamente na janela do terminal. Você pode usar a seta para cima do seu teclado para recordar os comandos de terminal mais recentes que você fez.
Observe que você pode modificar seu código para ser mais eficiente:
# Pergunte o nome do usuário
name = input("What's your name? ")
# Remova espaços em branco da string e coloque a primeira letra de cada palavra em maiúscula
name = name.strip().title()
# Imprima o resultado
print(f"hello, {name}")
Isso cria o mesmo resultado que seu código anterior.
Podemos ir ainda mais longe!
# Pergunte o nome do usuário, remova espaços em branco da string e coloque a primeira letra de cada palavra em maiúscula
name = input("What's your name? ").strip().title()
# Imprima o resultado
print(f"hello, {name}")
Você pode aprender mais sobre strings na documentação do Python sobre str
.
int
Em Python, um inteiro é referido como int
.
No mundo da matemática, estamos familiarizados com os operadores +
, -
, *
, /
e %
. Esse último operador %
ou operador módulo pode não ser muito familiar para você.
Você não precisa usar a janela do editor de texto no seu compilador para executar código Python. No terminal, você pode executar apenas python
. Você verá >>>
na janela do terminal. Você pode então executar código ao vivo e interativo. Você poderia digitar 1+1
e ele executaria esse cálculo. Este modo não será comumente usado durante este curso.
Abrindo o VS Code novamente, podemos digitar code calculator.py
no terminal. Isso criará um novo arquivo no qual criaremos nossa própria calculadora.
Primeiro, podemos declarar algumas variáveis.
x = 1
y = 2
z = x + y
print(z)
Naturalmente, quando executamos python calculator.py
, obtemos o resultado na janela do terminal de 3
. Podemos tornar isso mais interativo usando a função input
.
x = input("What's x? ")
y = input("What's y? ")
z = x + y
print(z)
Executando este programa, descobrimos que a saída está incorreta como 12
. Por que isso pode ser?
Anteriormente, vimos como o sinal +
concatena duas strings. Como a entrada do teclado do seu computador é tratada como texto, ela é tratada como uma string. Portanto, precisamos converter essa entrada de uma string para um inteiro. Podemos fazer isso da seguinte forma:
x = input("What's x? ")
y = input("What's y? ")
z = int(x) + int(y)
print(z)
O resultado agora está correto. O uso de int(x)
é chamado de “casting”, onde um valor é temporariamente alterado de um tipo de variável (neste caso, uma string) para outro (aqui, um inteiro).
Podemos melhorar ainda mais nosso programa da seguinte forma:
x = int(input("What's x? "))
y = int(input("What's y? "))
print(x + y)
Isso ilustra que você pode executar funções dentro de funções. A função interna é executada primeiro, e depois a externa é executada. Primeiro, a função input
é executada. Em seguida, a função int
.
Você pode aprender mais na documentação do Python sobre int
.
Ao decidir sobre sua abordagem para uma tarefa de programação, lembre-se de que pode haver muitos argumentos razoáveis para muitas abordagens diferentes para o mesmo problema.
Independentemente da abordagem que você tome para uma tarefa de programação, lembre-se de que seu código deve ser legível. Você deve usar comentários para dar a si mesmo e a outros pistas sobre o que seu código está fazendo. Além disso, você deve criar código de forma que seja legível.
Um valor de ponto flutuante é um número real que tem um ponto decimal, como 0.52
.
Você pode alterar seu código para suportar floats da seguinte forma:
x = float(input("What's x? "))
y = float(input("What's y? "))
print(x + y)
Essa mudança permite que seu usuário insira 1.2
e 3.4
para apresentar um total de 4.6
.
Vamos imaginar, no entanto, que você queira arredondar o total para o número inteiro mais próximo. Olhando a documentação do Python para round
, você verá que os argumentos disponíveis são round(number[, ndigits])
. Esses colchetes indicam que algo opcional pode ser especificado pelo programador. Portanto, você poderia fazer round(n)
para arredondar um dígito para o número inteiro mais próximo. Alternativamente, você poderia codificar da seguinte forma:
# Obtenha a entrada do usuário
x = float(input("What's x? "))
y = float(input("What's y? "))
# Crie um resultado arredondado
z = round(x + y)
# Imprima o resultado
print(z)
A saída será arredondada para o número inteiro mais próximo.
E se quisermos formatar a saída de números longos? Por exemplo, em vez de ver 1000
, você pode desejar ver 1,000
. Você poderia modificar seu código da seguinte forma:
# Obtenha a entrada do usuário
x = float(input("What's x? "))
y = float(input("What's y? "))
# Crie um resultado arredondado
z = round(x + y)
# Imprima o resultado formatado
print(f"{z:,}")
Embora bastante criptográfico, esse print(f"{z:,}")
cria um cenário onde o z
exibido incluirá vírgulas onde o resultado poderia parecer 1,000
ou 2,500
.
Como podemos arredondar valores de ponto flutuante? Primeiro, modifique seu código da seguinte forma:
# Obtenha a entrada do usuário
x = float(input("What's x? "))
y = float(input("What's y? "))
# Calcule o resultado
z = x / y
# Imprima o resultado
print(z)
Ao inserir 2
como x
e 3
como y
, o resultado z
é 0.6666666666
, aparentemente indo ao infinito, como poderíamos esperar.
Vamos imaginar que queremos arredondar isso. Poderíamos modificar nosso código da seguinte forma:
# Obtenha a entrada do usuário
x = float(input("What's x? "))
y = float(input("What's y? "))
# Calcule o resultado e arredonde
z = round(x / y, 2)
# Imprima o resultado
print(z)
Como poderíamos esperar, isso arredondará o resultado para os dois pontos decimais mais próximos.
Poderíamos também usar fstring
para formatar a saída da seguinte forma:
# Obtenha a entrada do usuário
x = float(input("What's x? "))
y = float(input("What's y? "))
# Calcule o resultado
z = x / y
# Imprima o resultado
print(f"{z:.2f}")
Esse código criptográfico fstring
exibe o mesmo que nossa estratégia de arredondamento anterior.
Você pode aprender mais na documentação do Python sobre float
.
def
Não seria ótimo criar nossas próprias funções?
Vamos trazer de volta nosso código final de hello.py digitando code hello.py
na janela do terminal. Seu código inicial deve ser o seguinte:
# Pergunte o nome do usuário, remova espaços em branco da string e coloque a primeira letra de cada palavra em maiúscula
name = input("What's your name? ").strip().title()
# Imprima o resultado
print(f"hello, {name}")
Podemos melhorar nosso código para criar nossa própria função especial que diz “hello” por nós!
Apagando todo o nosso código no nosso editor de texto, vamos começar do zero:
name = input("What's your name? ")
hello()
print(name)
Tentando executar este código, seu compilador exibirá um erro. Afinal, não há função definida para hello
.
Podemos criar nossa própria função chamada hello
da seguinte forma:
def hello():
print("hello")
name = input("What's your name? ")
hello()
print(name)
Observe que tudo sob def hello()
está indentado. Python é uma linguagem indentada. Ele usa a indentação para entender o que faz parte da função acima. Portanto, tudo na função hello
deve estar indentado. Quando algo não está indentado, ele trata isso como se não estivesse dentro da função hello
. Executando python hello.py
na janela do terminal, você verá que sua saída não está exatamente como você pode querer.
Podemos melhorar ainda mais nosso código:
# Crie nossa própria função
def hello(to):
print("hello,", to)
# Saída usando nossa própria função
name = input("What's your name? ")
hello(name)
Aqui, nas primeiras linhas, você está criando sua função hello
. Desta vez, no entanto, você está dizendo ao compilador que esta função aceita um único parâmetro: uma variável chamada to
. Portanto, quando você chama hello(name)
, o computador passa name
para a função hello
como to
. É assim que passamos valores para funções. Muito útil! Executando python hello.py
na janela do terminal, você verá que a
saída está muito mais próxima do nosso ideal apresentado anteriormente nesta palestra.
Podemos mudar nosso código para adicionar um valor padrão a hello
:
# Crie nossa própria função
def hello(to="world"):
print("hello,", to)
# Saída usando nossa própria função
name = input("What's your name? ")
hello(name)
# Saída sem passar os argumentos esperados
hello()
Teste seu código você mesmo. Observe como o primeiro hello
se comportará como você pode esperar, e o segundo hello
, que não recebe um valor, por padrão, exibirá hello, world
.
Não precisamos ter nossa função no início do nosso programa. Podemos movê-la para baixo, mas precisamos dizer ao compilador que temos uma função principal e uma função hello
separada.
def main():
# Saída usando nossa própria função
name = input("What's your name? ")
hello(name)
# Saída sem passar os argumentos esperados
hello()
# Crie nossa própria função
def hello(to="world"):
print("hello,", to)
Isso sozinho, no entanto, criará um tipo de erro. Se executarmos python hello.py
, nada acontece! A razão para isso é que nada neste código está realmente chamando a função principal e trazendo nosso programa à vida.
A seguinte modificação muito pequena chamará a função principal e restaurará nosso programa para funcionar:
def main():
# Saída usando nossa própria função
name = input("What's your name? ")
hello(name)
# Saída sem passar os argumentos esperados
hello()
# Crie nossa própria função
def hello(to="world"):
print("hello,", to)
main()
Você pode imaginar muitos cenários em que você não quer apenas que uma função execute uma ação, mas também retorne um valor de volta para a função principal. Por exemplo, em vez de simplesmente imprimir o cálculo de x + y
, você pode querer que uma função retorne o valor desse cálculo para outra parte do seu programa. Este “passar de volta” de um valor chamamos de valor de retorno.
Voltando ao nosso código calculator.py digitando code calculator.py
. Apague todo o código lá. Reescreva o código da seguinte forma:
def main():
x = int(input("What's x? "))
print("x squared is", square(x))
def square(n):
return n * n
main()
Efetivamente, x
é passado para square
. Então, o cálculo de x * x
é retornado para a função principal.
Ao longo do trabalho desta única palestra, você aprendeu habilidades que usará inúmeras vezes em seus próprios programas. Você aprendeu sobre…