Conflito em Estrutura de Repetição [RESOLVIDO]

1. Conflito em Estrutura de Repetição [RESOLVIDO]

Welington Gian
wgian98

(usa Arch Linux)

Enviado em 22/11/2018 - 14:03h

Sou iniciante em Python, preciso de ajuda com este código, a estrutura de repetição volta a rodar o código novamente quando digitado a opção 'não' ao invés de terminar o script:

#!/usr/bin/python
#_*_coding: UTF-8_*_

install_option = int
other_install = str

def end():

print('\nObrigado por utilizar o assistente!')

def options():

print('\n 1 - Mozilla Firefox')
print('\n 2 - Selenium WebDriver')
print('\n 3 - Geckodriver')

def install():

print('\nQual programa você quer instalar?')
print('Use os números relacionados a cada programa para instala-los: ')
install_option = input('')

if(install_option == 1):

print('\nCerto, vamos providenciar a instalação do Mozilla Firefox!')
other_install = raw_input('\nDeseja instalar outro programa?(Sim/não): ')

if(other_install == 'Sim' or 'sim'):

install()

elif(other_install == 'não' or other_install == 'não'):

end()

else:

print('\nOpção inválida!\n')
end()

elif(install_option == 2):

print('\nCerto, vamos providenciar a instalação do Selenium WebDriver!')
other_install = raw_input('\nDeseja instalar outro programa?(Sim/não): ')

if(other_install == 'Sim' or 'sim'):

install()

elif(other_install == 'não' or 'não'):

end()

else:

print('\nOpção inválida!\n')
end()

elif(install_option == 3):

print('\nCerto, vamos providenciar a instalação do Geckodriver!')
other_install = raw_input('\nDeseja instalar outro programa?(Sim/não): ')

if(other_install == 'Sim' or 'sim'):

install()

elif(other_install == 'não' or 'não'):

end()

else:

print('\nOpção inválida!\n')
end()

elif(install_option == 0):

end()

else:

print('\nOpção inválida! Escolha um número relacionado a um dos programas!\n')
options()
install()

print('\nBem-vindo ao assistente de instalação!')
print('Para executar o Automator Likes você precisa instalar os seguintes programas: \n')
options()
install()



  


2. MELHOR RESPOSTA

Diego Mendes Rodrigues
diegomrodrigues

(usa Ubuntu)

Enviado em 22/11/2018 - 16:47h

Irei te mostrar duas possíveis soluções para esse conflito.

Utilizei
other_install = other_install.lower() 
para converter o texto digitado em letras minúsculas.

Os IFs ficaram da seguinte forma:
if other_install == 'sim':
elif other_install in ['não', 'nao']:


Além de alguns pequenos ajustes.

Segue o código.
#!/usr/bin/python
#_*_coding: UTF-8_*_

install_option = int
other_install = str

def end():
print('\nObrigado por utilizar o assistente!')

def options():
print('\n 1 - Mozilla Firefox')
print('\n 2 - Selenium WebDriver')
print('\n 3 - Geckodriver')

def install():
print('\nQual programa você quer instalar?')
install_option = input('Use os números relacionados a cada programa para instala-los: ')

if install_option == 1:
print('\nCerto, vamos providenciar a instalação do Mozilla Firefox!')

other_install = raw_input('\nDeseja instalar outro programa? [Sim/Não]: ')

# Converter o texto digitado pelo usuário para letras minusculas
other_install = other_install.lower()

# Verificar se o usuário digitou sim
if other_install == 'sim':
options()
install()

# Verificar se o usuário digitou não ou nao
elif other_install in ['não', 'nao']:
end()

else:
print('\nOpção inválida!\n')
end()

elif install_option == 2:
print('\nCerto, vamos providenciar a instalação do Selenium WebDriver!')

other_install = raw_input('\nDeseja instalar outro programa? [Sim/Não]: ')

# Converter o texto digitado pelo usuário para letras minusculas
other_install = other_install.lower()

# Verificar se o usuário digitou sim
if other_install == 'sim':
options()
install()

# Verificar se o usuário digitou não ou nao
elif other_install in ['não', 'nao']:
end()

else:
print('\nOpção inválida!\n')
end()

elif(install_option == 3):
print('\nCerto, vamos providenciar a instalação do Geckodriver!')

other_install = raw_input('\nDeseja instalar outro programa? [Sim/Não]: ')

# Converter o texto digitado pelo usuário para letras minusculas
other_install = other_install.lower()

# Verificar se o usuário digitou sim
if other_install == 'sim':
options()
install()

# Verificar se o usuário digitou não ou nao
elif other_install in ['não', 'nao']:
end()

else:
print('\nOpção inválida!\n')
end()

elif(install_option == 0):
end()

else:
print('\nOpção inválida! Escolha um número relacionado a um dos programas!\n')
options()
install()

# Executar o Script
print('\nBem-vindo ao assistente de instalação!')
print('Para executar o Automator Likes você precisa instalar os seguintes programas:')
options()
install()


Na segunda opção, utilizei o
other_install = other_install.replace('ã', 'a') 
para transformar uma resposta do usuário que seja não em nao.

O IF do não ficou desta forma:
elif other_install == 'nao': 


Segue o código.
#!/usr/bin/python
#_*_coding: UTF-8_*_

install_option = int
other_install = str

def end():
print('\nObrigado por utilizar o assistente!')

def options():
print('\n 1 - Mozilla Firefox')
print('\n 2 - Selenium WebDriver')
print('\n 3 - Geckodriver')

def install():
print('\nQual programa você quer instalar?')
install_option = input('Use os números relacionados a cada programa para instala-los: ')

if install_option == 1:
print('\nCerto, vamos providenciar a instalação do Mozilla Firefox!')

other_install = raw_input('\nDeseja instalar outro programa? [Sim/Não]: ')

# Converter o texto digitado pelo usuário para letras minusculas
other_install = other_install.lower()

# Substituir 'ã' por 'a' no texto digitado pelo usuário, portanto 'não' vira 'nao'
other_install = other_install.replace('ã', 'a')

# Verificar se o usuário digitou sim
if other_install == 'sim':
options()
install()

# Verificar se o usuário digitou não ou nao
elif other_install == 'nao':
end()

else:
print('\nOpção inválida!\n')
end()

elif install_option == 2:
print('\nCerto, vamos providenciar a instalação do Selenium WebDriver!')

other_install = raw_input('\nDeseja instalar outro programa? [Sim/Não]: ')

# Converter o texto digitado pelo usuário para letras minusculas
other_install = other_install.lower()

# Substituir 'ã' por 'a' no texto digitado pelo usuário, portanto 'não' vira 'nao'
other_install = other_install.replace('ã', 'a')

# Verificar se o usuário digitou sim
if other_install == 'sim':
options()
install()

# Verificar se o usuário digitou não ou nao
elif other_install == 'nao':
end()

else:
print('\nOpção inválida!\n')
end()

elif(install_option == 3):
print('\nCerto, vamos providenciar a instalação do Geckodriver!')

other_install = raw_input('\nDeseja instalar outro programa? [Sim/Não]: ')

# Converter o texto digitado pelo usuário para letras minusculas
other_install = other_install.lower()

# Substituir 'ã' por 'a' no texto digitado pelo usuário, portanto 'não' vira 'nao'
other_install = other_install.replace('ã', 'a')

# Verificar se o usuário digitou sim
if other_install == 'sim':
options()
install()

# Verificar se o usuário digitou não ou nao
elif other_install == 'nao':
end()

else:
print('\nOpção inválida!\n')
end()

elif(install_option == 0):
end()

else:
print('\nOpção inválida! Escolha um número relacionado a um dos programas!\n')
options()
install()

# Executar o Script
print('\nBem-vindo ao assistente de instalação!')
print('Para executar o Automator Likes você precisa instalar os seguintes programas:')
options()
install()


Abraço,
Diego M. Rodrigues

3. Re: Conflito em Estrutura de Repetição [RESOLVIDO]

Rodrigo
omag0

(usa Debian)

Enviado em 22/11/2018 - 15:31h

Excelente material iniciante para Python
https://www.youtube.com/watch?v=S9uPNppGsGo&list=PLHz_AreHm4dlKP6QQCekuIPky1CiwmdI6


4. Python

Welington Gian
wgian98

(usa Arch Linux)

Enviado em 22/11/2018 - 19:20h

omag0 escreveu:

Excelente material iniciante para Python
https://www.youtube.com/watch?v=S9uPNppGsGo&list=PLHz_AreHm4dlKP6QQCekuIPky1CiwmdI6


Obrigado, vou dar uma olhada.


5. Python

Welington Gian
wgian98

(usa Arch Linux)

Enviado em 22/11/2018 - 19:26h

[quote]diegomrodrigues escreveu:

Irei te mostrar duas possíveis soluções para esse conflito.

Funcionou perfeitamente. Eu reescrevi o código 3 vezes e analisei linha por linha umas 10 vezes haha. Muito obrigado, foi de grande ajuda!