2
respostas

Mão na massa: Modularizando o jogo

Oiii, fiz assim a resolução desse exercício. Só fiquei com uma dúvida, eu utilizo a programação para ensinar aos meus alunos e meu desafio é ensinar python agora, então resolvi estudar e vi de ele é simples, mas comparando com o que estou acostuma a usar ele não tem return na função, eu posso dizer que esse if pode ser comparado com um return de função, sei que é melhor não comparar linguagens, mas eu fiquei com essa dúvida.

adivinhacao.py

def jogar():
    print('Jogo de adivinhação começou!')

if(__name__ == "__main__"):
    jogar()

focar.py

def jogar():
    print("*********************************")
    print("***Bem vindo ao jogo da Forca!***")
    print("*********************************")

    print("Fim do jogo")

if(__name__ == "__main__"):
    jogar()

jogos.py

import jogo_da_forca
import adivinhacao

def jogar():
    print("*********************************")
    print("*******Escolha o seu jogo!*******")
    print("*********************************")

    print("(1) Forca (2) Adivinhação")

    jogo = int(input("Qual jogo? "))

    if (jogo == 1):
        print("Jogando forca")
        jogo_da_forca.jogar()
    elif (jogo == 2):
        print("Jogando adivinhação")
        adivinhacao.jogar()

if(__name__ == "__main__"):
    jogar()
2 respostas

Olá, Paula. Tudo bom? Não manjo de Python, mas o que eu sei é que algumas funções possuem retorno e outras não. É comum em algumas outras linguagens ser representado como

void function(type name)

Onde void é o tipo de retorno (vazio, que significa sem retorno).

No caso do Python, parece que ele não declara o tipo de retorno na função. Você pode simplesmente dentro do escopo da função, acrescentar um return e simples assim a função passa a ter retorno.

Agora, sobre o if name == main lá embaixo, achei esse link que pode dar uma esclarecida no que isso significa: https://www.hashtagtreinamentos.com/if__name____main__-no-python?gclid=CjwKCAiA3KefBhByEiwAi2LDHJytUaW7o_vDkg2bbzYvgcgsAqSTUcbbXdjCz3fl2XdTVq1JIiR32RoCFtMQAvD_BwE

Olá Paula,

o trecho de código if(__name__="__main__") não é como um retorno de uma função. Se parece mais com a checagem de uma variável (ou propriedade).

Por exemplo:

na execução individual do arquivo focar.py a "variável global" __name__ receberá o valor "__main__" porque o python o "identificou" com principal.

no entanto, se focar.py for importado como um módulo, como acontece na execução do arquivo jogos.py haverá uma 'propriedade' __name__ para jogos.py (com o valor "__main__") e uma propriedade __name__ para o focar.py com valor focar (ou outro nome que pode ser informado no momento do import).

Então este bloco de if verifica se python deve usar o arquivo como arquivo principal ou como módulo importado.

Para saber mais pesquise por buildins python e ambiente de código principal

Deixo dois links que talvez possam ajudar:

https://docs.python.org/pt-br/3/library/__main__.html

https://docs.python.org/pt-br/3/library/builtins.html