Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Problema ao importar arquivos

Bom dia,

estou tendo dificuldades para importar os arquivos dos jogos para os arquivos do menu. Faço exatamente como o prof manda, mas acontece um erro de sintaxe. O nome do arquivo está correto e está salvo no mesmo diretório do arquivo que gera o menu. Podem dar uma ajuda, por favor? Segue meu código:

import 01_Adivinhacao

print('***************************************')
print('*            Menu de jogos            *')
print('***************************************\n')

print('(1) Adivinhação')
option = int(input('Digite o número do jogo desejado: '))

01_Adivinhacao.play()

Segue o erro:

>>> python3 -u "/media/raquel/Novo volume/01_OneDrive/Estudos/Alura/alura-exercises/Python/00_Menu.py"
  File "<stdin>", line 1
    python3 -u "/media/raquel/Novo volume/01_OneDrive/Estudos/Alura/alura-exercises/Python/00_Menu.py"
               ^
SyntaxError: invalid syntax
>>>
6 respostas

Raquel, poderia postar o conteúdo do arquivo 01_Adivinhacao?

Acredito que o problema não é na localização do arquivo, e sim na forma que a função play está sendo chamada.

import random

def play():
  print('***************************************')
  print('*  Bem vindo ao jogo de Adivinhação!  *')
  print('***************************************\n')

  secret_num = round(random.randrange(1, 101))
  right_guess = False
  score = 1000

  attempt_total = input('Digite o número de tentativas:\n')
  print(f'Você tem {attempt_total} tentativa(s).\n')
  for attempt_num in range(1, int(attempt_total) + 1):
    print(f'Tentativa {attempt_num} de {attempt_total}.\n')
    guess = input('Digite um número de 1 a 100:\n')
    if (int(guess) < 1 or int(guess) > 100):
      print('Número digitado está fora do intervalo permitido.\n')
      continue
    right = int(guess) == secret_num
    higher = int(guess) > secret_num
    # lower = int(guess) < secret_num
    if (right):
      print('Você acertou o número secreto!\n')
      right_guess = True
      break
    elif (higher):
      print('Que pena! Seu palpite é maior que o número secreto.\n')
      score -= abs(secret_num - int(guess))
    else:
      print('Que pena! Seu palpite é menor que o número secreto.\n')
      score -= abs(secret_num - int(guess))
  if (right_guess == False):
    score -= abs(secret_num - int(guess) - 500)
    print('Sua tentativas esgotaram.')
    print(f'O número secreto era {secret_num}.\n')
  print(f'Sua pontuação foi {score}.\n')
  print('***************************************')
  print('*            GAME OVER!               *')
  print('***************************************\n')

if __name__ == '__main__': play()

Aqui está o código do jogo da adivinhação. A única coisa que fiz diferente foi a parte do nível de dificuldade que escolhi por escolher um número de tentativas.

Obrigada desde já!

solução!

Raquel altere o nome do seu arquivo removendo a numeração

01_Adivinhacao pra Adivinhacao e faça um novo teste, pelo que entendi a versão 3.5 não suporta a sintaxe "número_variavel"

Olá, André.

Realmente funcionou. Muito obrigada!

Mas... uma dúvida: gostaria de manter meus arquivos organizados, por isso havia feito esse tipo de nomeação. Existe alguma outra maneira de fazê-lo sem causar esse erro? Tentei criar uma pasta chamada games dentro da pasta onde guardo os arquivos do curso e chamar o arquivo do jogo da adivinhação, mas não consegui. Recebo a mensagem de que o módulo não existe. Tentei chamar do seguinte jeito: import games/adivinhacao Sabe como posso fazer essa organização?

Obrigada pela atenção.

Olá Raquel,

fiz alguns testes e consegui carregar o jogo com o código abaixo (tendo forca o nome 01_forca), sou iniciante na programação e pelo que entendi é o tratamento de "octal number" que está em questão. Não sei se alguém com mais conhecimento pode explicar melhor ou ter até outra forma mais facil.

module = __import__('01_forca')
import adivinhacao_for

#forca = __import__('01_forca')

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

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

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

    if(jogo == 1):
        __import__('01_forca').jogar()
        #forca.jogar() Ao remover o comentário linha 4 remover este também e adicionar comentario a linha acima (16)

    elif(jogo == 2):
        adivinhacao_for.jogar()

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

Entendi. Obrigada, André, mas acho que por enquanto manterei do jeito normal.

Obrigada pela ajuda!