Mandar um café pro programador

Pode me ajudar a transformar cafeína em código?

Função - Como Declarar, Chamar e Usar funções

Neste tutorial de nossa Apostila de Python online e grátis, vamos aprender como declarar uma função, além de ver como fazer para chamar ela, sempre que quisermos.


Como Declarar uma Função: def

Parar criar uma função em linguagem de programação Python, precisamos fazer uma declaração correta e precisa dela.

O escopo da declaração de uma função é:

def nome-funcao(argumentos):
   código
   código
   ...
   return valor

A primeira linha é chamada de hearder ou cabeçalho. A definição da declaração da função começa com a palavra-chave def. O que vem após o def é o nome da função.

No nosso caso, o nome da função é nome-funcao.
Em seguida, um par de parêntesis, que pode conter argumentos (informações para a função usar).

Depois, os dois pontos. E abaixo, o código da sua função.
Por fim, a instrução return com alguma informação, um valor, para retornar para quem chamou a função.

Calma, com exemplos, e aos poucos, você vai entender tudo isso bem melhor.

Há duas coisas opcionais:
Argumentos (informações que você passa para a função, ao chamar ela)
Retornar valor (informações que a função retorna para quem chamou ela)

Como Chamar uma Função

Como você chama alguém? Uma pessoa, um amigo?
Pelo nome, correto?

Em funções, é a mesma coisa. Basta escrever o nome dela, e ela roda.
Simples assim.



Se declaramos uma função assim:

def lalala():
   código
   código
   ... 

O nome dela é lalala, não tem argumentos nem retorna nenhum valor.
Para chamar ela, fazemos com a seguinte linha de código:
lalala()

E pronto. Só isso. Vamos ver um exemplo de código real? 

Exemplo de código com Função

Crie um programa em Python que exibe a mensagem "Olá, mundo!"
Porém, essa mensagem deve rodar de dentro de uma função.

Vamos criar uma função chamada mensagem. O que ela faz é simplesmente exibir uma mensagem, um print.
 
Agora, basta chamar:
mensagem()

Pronto, só isso, veja como fica o código:

def mensagem():
    print("Olá, mundo")

mensagem()




Script de Python com Funções

Em todos nossos scripts e programas de Python, aconteceu uma coisa:
Ele rodava da primeira até a última linha.
Linha por linha.
Na ordem.

No exemplo de código anterior, não.
É definido uma função, tem um print...mas nada ocorre.

Só depois que chamamos a função (mensagem()), é que acontece algo.
Ou seja, o Python pula esses def, não roda ele de cara.

Aliás, se você não tivesse chamado a função via mensagem(), aquele código nem seria executado.

Quando chamamos uma função de nome nome(), o Python sai buscando no código uma def nome(), ou seja, ele sabe que você chamou uma função.

Então ele para tudo e vai buscar onde essa função foi declarada e executa ela.
Ok?

Pode ter  1 milhão de linhas de código com funções. Se elas não forem chamadas, simplesmente não executam.

Mas se tiver uma função de uma linha (como a do exemplo), e ela for chamada 1 milhão de vezes, ela é executada 1 milhão de vezes.

Ou infinita vezes. O código a seguir executa o Olá, mundo! infinitamente:

def mensagem():
    print("Olá, mundo")

while 1:
    mensagem()


Exemplo de Código com Funções

Crie uma função que pede dois números, faz a soma e exibe o resultado, através de uma função. O usuário pode executar a função quantas vezes desejar.

A função que soma será a soma(). Ela é bem simples, pede x, pede y, transforma tudo em float, soma na variável soma e exibe este valor. Pronto.
Função é isso, um código simples, pequeno e bem específico, nada mais, nada menos.

Agora vamos ao programa normal.
Talvez seja preciso chamar a função soma() várias vezes. Quem vai controlar isso é a variável continuar.

Inicialmente ela é 1 (verdadeiro ou TRUE).
Com um laço while, testamos o valor de continuar, como é 1, é TRUE, então o looping roda.

Dentro do laço, é testado o valor de continuar, se for verdadeiro, cai num IF que chama a função soma().

Inicialmente, é tudo verdadeiro, logo a função é invocada.
Ela roda normalmente e faz tudo bonitinho.

Depois, perguntamos ao usuário se ele deseja continuar a fazer mais somas. Se desejar encerrar o programa, basta digitar 0.
continuar vai ser 0, o laço while vai ter teste FALSO e não vai mais executar, encerrando o looping e o programa.

Se digitar qualquer coisa diferente de 0, o teste do laço while vai ser verdadeiro e vai rodar de novo.

Nosso código fica:

def soma():
    x = float(input("Primeiro numero: "))
    y = float(input("Segundo numero: "))
    soma = x + y
    print("Soma: ",soma)

continuar=1

while continuar:
    if(continuar):
        soma()
    continuar=int(input("Digite 0 se desejar encerrar ou qualquer outro numero para continuar: "))


Bacana, né?

Exemplo de Código com Funções

Faça uma calculadora, usando funções. O script pergunta qual operação o usuário deseja rodar (soma, subtração, multiplicação ou divisão) e executa a operação.

A calculadora deve ser executada quantas vezes o usuário desejar.

A ideia aqui é criar várias funções, e dependendo do que o usuário digitar, executar a função corretamente.

Veja a solução completa:
Calculadora em Python usando Funções

7 comentários:

  1. #Roda sem o "if(continuar):"


    def soma():
    x = float(input("Primeiro numero: "))
    y = float(input("Segundo numero: "))
    soma = x + y
    print("Soma: ",soma)

    continuar=1

    while continuar:
    soma()
    continuar=int(input("Digite 0 se desejar encerrar ou qualquer outro numero para continuar: "))

    ResponderExcluir
  2. def função(dia,mes,ano):
    data = False
    if (mes == 1 or mes == 3 or mes == 5 or mes == 7
    or mes == 8 or mes == 10 or mes == 12):
    if dia <= 31:
    data = True
    if ( mes ==4 or mes ==6 or mes ==9 or mes ==11):
    if dia<=30:
    valida = True
    if mes==2:
    if (ano%4 == 0 and ano%400!=0) or (ano%400 == 0):
    if(dia<=29):
    valida = True
    elif(dia<=28):
    valida = True
    if(data):
    print('Data inválida')
    return
    mes = ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez']
    print("Tauá",",",dia,'de ',mes[mes],'de',ano)


    dia = int(input('informe o dia - '))
    mes = int(input('informe o mes - ')) - 1
    ano = int(input('informe o ano - '))
    função(dia,mes,ano)


    onde estou errando no meu código?

    ResponderExcluir
    Respostas
    1. A tabela de nomes de meses não pode se chamar 'mes' pois confunde com o parâmetro da função. Mude para 'mes1' por exemplo. E, logicamente, o print deve vir após a chamada da função.

      Excluir
  3. olá tudo bem?
    por gentileza, como faço para gravar vários inputs, em um arquivo txt?

    pois aqui eu faço isso:

    nome = open("arquivo.txt", "w")
    nome_usuario = input("Qual seu nome: ")
    nome.write(nome_usuario)
    nome.write()
    nome.close()

    AGORA> não consigo salvar nesse mesmo arquivo.txt, vários inputs.

    ResponderExcluir
  4. gostaria de saber como chamar uma função antes de declarar a função, o motivo é para que meu codigo fique organizado

    ResponderExcluir
  5. def soma():
    a = int(input("primeiro numero"))
    b = int(input("segundo numero"))
    soma = a+b
    print(soma)

    def subtração():
    a = int(input("primeiro numero"))
    b = int(input("segundo numero"))
    sub = a - b
    print(sub)

    def multiplicação():
    a = int(input("primeiro numero"))
    b = int(input("segundo numero"))
    multi = a * b
    print(multi)

    def divisão():
    a = int(input("primeiro numero"))
    b = int(input("segundo numero"))
    div = a / b
    print(div)

    continuar =1

    while continuar:
    entrada = int(input('digite gual operação deseja fazer\n1.adição\n2.subtração\n3.multiplicação\n4.divisão'))
    if entrada == 1:
    soma()
    continuar=int(input('se deseja continuar digite gualquer numero se nao 0'))
    elif entrada == 2:
    subtração()
    continuar=int(input('se deseja continuar digite gualquer numero se nao 0'))
    elif entrada == 3:
    multiplicação()
    continuar=int(input('se deseja continuar digite gualquer numero se nao 0'))
    elif entrada == 4:
    divisão()
    continuar=int(input('se deseja continuar digite gualquer numero se nao 0'))

    ResponderExcluir

Bora fazer evoluir o ensino da Programação no Brasil ?

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo