Enviado em 01/05/2021 - 03:04h
Boa noite povo, este é meu primeiro post, então já peço perdão por qualquer conduta errada que eu possa ter tomado. Muitas das coisas que eu pesquiso sobre Python3 eu acabo aprendendo aqui, entretando me surgiram algumas dúvidas enquanto eu estava programando!
Então vamos lá. Eu estava fazendo um mini-jogo onde você pode digitar um desejo e teoricamente um gênio irônico de uma lampada mágica realizará seu desejo, mas ele nunca o faz. Eu sei, a ideia é estupída e infantil, porém estou aprendendo Python3 a pouquíssimo tempo e achei esse "jogo" uma ótima forma de praticar alguns conceitos... E bom, já que me surgiram algumas dúvidas, então a ideia funcionou. Enfim, chega de enrolação. Primeiramente, na linha 24 tem três "#" uma seguida da outra: era pra ser um comentário porém ficou muito grande, então quando chegarem nessa parte, considerem o seguinte comentário:
### Aqui começa a ficar um pouco confuso, eu quero que: se a "escolha_aleatoria_2" fosse igual a "sete", ou seja, à resposta original do usuário, ele faça uma sequência específica de coisas, entretanto não achei outra forma para fazer isso sem ser usando esse "if" que acaba gerando dois caminhos completamente diferentes por conta de um detalhezinho.
Dito isso, aqui está o código:
O jogo funciona da forma que é planejado, entretando há algumas funcionalidades que eu queria adicionar.
As minhas dúvidas são o seguinte:
1 - Como posso fazer para o programa reiniciar automaticamente após ser finalizado? Digo, para ele fazer a mesma pergunta que foi feita no início, no caso. Eu vi vários tópicos aqui no site falando sobre usar "when", porém não consegui aplicar neste meu código. Então me surgiu este questionamento.
2 - Eu definitivamente não me orgulho de ter usado tantos "if", "elif" e "else" . Gostaria muito de saber se há outra forma mais simples ou até mesmo mais complexa de fazer a mesma coisa, pois acho que dessa forma o código fica visualmente poluído.
3 - Por fim, quero saber como implementar a seguinte funcionalidade: Se o(a) usuário(a) digitar qualquer coisa além de "sim", "não" ou "nao" (independente das letras serem maiúsculas ou minúsculas, pois isso ja é corrigido pelo próprio programa), quero que apareça uma mensagem dizendo para ele(a) tentar novamente, informando-o(a) de escrever apenas com "sim" ou "não". Caso a pessoa digite qualquer coisa, o código da procedência ao jogo e bom... Isso é um erro. Tentei concertar isso jogando um "elif" ali no meio de várias formas possíveis, mas não deu certo :(
Obrigado pela paciência de todos que leram até aqui. Eu decidi postar minha pergunta no vivaolinux pois quando vi outras perguntas, 99% das respostas eram de pessoas super gente boa, apenas querendo ajudar, então me senti atraído pela comunidade. :)
Então vamos lá. Eu estava fazendo um mini-jogo onde você pode digitar um desejo e teoricamente um gênio irônico de uma lampada mágica realizará seu desejo, mas ele nunca o faz. Eu sei, a ideia é estupída e infantil, porém estou aprendendo Python3 a pouquíssimo tempo e achei esse "jogo" uma ótima forma de praticar alguns conceitos... E bom, já que me surgiram algumas dúvidas, então a ideia funcionou. Enfim, chega de enrolação. Primeiramente, na linha 24 tem três "#" uma seguida da outra: era pra ser um comentário porém ficou muito grande, então quando chegarem nessa parte, considerem o seguinte comentário:
### Aqui começa a ficar um pouco confuso, eu quero que: se a "escolha_aleatoria_2" fosse igual a "sete", ou seja, à resposta original do usuário, ele faça uma sequência específica de coisas, entretanto não achei outra forma para fazer isso sem ser usando esse "if" que acaba gerando dois caminhos completamente diferentes por conta de um detalhezinho.
Dito isso, aqui está o código:
# A ideia é fazer um 'gênio' irônico da lâmpada que engana o usuário.
from random import choice # Daqui a pouco essa função será útil.
print(f'''{"Gênio da Lâmpada":_^100}\n\nOlá Usuário(a)! Obrigado por me livrar da lâmpada!
Irei recompensar você realizando somente um de seus mais ambiciosos desejos!''')
resposta_inutil = input('Vamos lá, diga-me, qual o seu desejo mais ambicioso? ')
um = 'ficar sem dinheiro nenhum até o dia de sua morte' # Eu comecei a criar alguns desejos para serem escolhidos de forma aleatória mais pra frente.
dois = 'ter todas as doenças possíveis ao mesmo tempo'
tres = 'ser a pessoa mais burra do mundo'
quatro = 'excluir da face da terra tudo que você gosta'
cinco = 'perder seu órgão sexual'
seis = 'queimar todas as árvores no mundo'
sete = resposta_inutil # Inútil, confesso... Achei que ficaria mais bonito se eu colocasse o "nome" dos desejos dessa forma, então não quis quebrar o padrão :p
oito = 'tornar-se a pessoa menos atraente ja existente no universo'
nove = 'receber 214 tapas na cara'
dez = 'sentir-se a pior coisa do universo que já existiu e ser incapacitado de morrer'
lista = [um, dois, tres, quatro, cinco] # Não sei se existe uma outra forma mais eficiente de fazer o que fiz aqui. Criei duas listas com elementos distintos para evitar que o mesmo desejo se repita. :)
lista2 = [seis, sete, oito, nove, dez] # Daqui a pouco essas listas farão sentido.
escolha_aleatoria_1 = choice(lista) # Aqui eu usei a funçao "choice" para escolher aleatoriamente um elemento da minha lista. O mesmo vale para a lista2 .
escolha_aleatoria_2 = choice(lista2)
if escolha_aleatoria_2 == sete: ### COMENTÁRIO ANEXADO NA PERGUNTA ###
resposta1 = input((f'Okay, então seu desjo é {escolha_aleatoria_1}? '))
resposta1_m = resposta1.lower() # Aqui eu joguei a resposta do usuario tudo para minúsculo e coloquei como condição no "if" a seguir, caso o usuário tenha algum problema e digite "SiM" Ou "nÃO".
if resposta1_m == 'sim':
print('Certo. Então realizarei seu desejo de fechar o programa.')
quit()
elif resposta1_m == 'nao' or 'não':
resposta2 = input(f'Perdão, me confundi. Seu desejo então é {escolha_aleatoria_2}? ') # É o que eu disse, não queria a chance de repetir o memso desejo, então criei outra lista com outros desejos
resposta2_m = resposta2.lower()
if resposta2_m == 'sim':
print(f'Que pena, pois demorou demais para responder. Te vejo na próxima!')
quit()
elif resposta2_m == 'nao' or 'não':
print(f'Mas que coisa, decida-se! Agora perdi a vontade de realizar seu desejo, te vejo na próxima.')
quit()
else:
confirmacao1 = input(f'Okay, então seu desejo é {escolha_aleatoria_1}? ')
confirmacao1_m = confirmacao1.lower()
if confirmacao1_m == 'sim':
print('Certo. Então realizarei seu desejo de fechar o programa.')
quit()
elif confirmacao1_m == 'nao' or 'não':
confirmacao2 = input(f'Perdão, me confundi. Seu desejo então é {escolha_aleatoria_2}? ')
confirmacao2_m = confirmacao2.lower()
if confirmacao2_m == 'sim':
print(f'Ué, achei que seu desejo era {resposta_inutil}. Que pena, perdi a vontade de realizar seu desejo. Passar bem.')
quit()
elif confirmacao2_m == 'nao' or 'não':
print(f'Mas que coisa, decida-se! Agora perdi a vontade de realizar seu desejo, te vejo na próxima.')
quit()
O jogo funciona da forma que é planejado, entretando há algumas funcionalidades que eu queria adicionar.
As minhas dúvidas são o seguinte:
1 - Como posso fazer para o programa reiniciar automaticamente após ser finalizado? Digo, para ele fazer a mesma pergunta que foi feita no início, no caso. Eu vi vários tópicos aqui no site falando sobre usar "when", porém não consegui aplicar neste meu código. Então me surgiu este questionamento.
2 - Eu definitivamente não me orgulho de ter usado tantos "if", "elif" e "else" . Gostaria muito de saber se há outra forma mais simples ou até mesmo mais complexa de fazer a mesma coisa, pois acho que dessa forma o código fica visualmente poluído.
3 - Por fim, quero saber como implementar a seguinte funcionalidade: Se o(a) usuário(a) digitar qualquer coisa além de "sim", "não" ou "nao" (independente das letras serem maiúsculas ou minúsculas, pois isso ja é corrigido pelo próprio programa), quero que apareça uma mensagem dizendo para ele(a) tentar novamente, informando-o(a) de escrever apenas com "sim" ou "não". Caso a pessoa digite qualquer coisa, o código da procedência ao jogo e bom... Isso é um erro. Tentei concertar isso jogando um "elif" ali no meio de várias formas possíveis, mas não deu certo :(
Obrigado pela paciência de todos que leram até aqui. Eu decidi postar minha pergunta no vivaolinux pois quando vi outras perguntas, 99% das respostas eram de pessoas super gente boa, apenas querendo ajudar, então me senti atraído pela comunidade. :)