Skip to content

Instantly share code, notes, and snippets.

@rodrigo-x
Last active February 1, 2024 21:58
Show Gist options
  • Save rodrigo-x/6b8929ae0daa42bef4077a00b897133c to your computer and use it in GitHub Desktop.
Save rodrigo-x/6b8929ae0daa42bef4077a00b897133c to your computer and use it in GitHub Desktop.
refactoring da taboada descritiva...
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pyttsx3
def inicializar_engine():
"""Inicializa a engine de texto para fala."""
return pyttsx3.init()
def gerar_tabuada(numero, num_linhas):
"""Gera a tabuada para um determinado número."""
return [f'{numero} vezes {i} = {numero * i}' for i in range(1, num_linhas + 1)]
def falar_resultados(engine, resultados):
"""Fala os resultados da tabuada."""
for resultado in resultados:
# Substitui " vezes " por " X " na impressão, mantendo " vezes " na fala
print(resultado.replace(" vezes ", " X "))
engine.say(resultado)
engine.runAndWait()
def obter_entrada_do_usuario(prompt):
"""Obtém a entrada do usuário com tratamento de erro para números inválidos."""
while True:
try:
return int(input(prompt))
except ValueError:
print('Por favor, insira um número inteiro válido.')
def main():
engine = inicializar_engine()
engine.setProperty("voice", "brazil")
numero = obter_entrada_do_usuario('\nDeseja a tabuada de qual número? \n')
num_linhas = obter_entrada_do_usuario('\nQuantas linhas deseja para a tabuada? \n')
tabuada = gerar_tabuada(numero, num_linhas)
print('\n')
falar_resultados(engine, tabuada)
engine.stop()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment