Advertisement
Rnery

Refactoring tabuada sonora..

Feb 1st, 2024
934
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.37 KB | Source Code | 0 0
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3.  
  4. import pyttsx3
  5.  
  6. def inicializar_engine():
  7.     """Inicializa a engine de texto para fala."""
  8.     return pyttsx3.init()
  9.  
  10. def gerar_tabuada(numero, num_linhas):
  11.     """Gera a tabuada para um determinado número."""
  12.     return [f'{numero} vezes {i} = {numero * i}' for i in range(1, num_linhas + 1)]
  13.  
  14. def falar_resultados(engine, resultados):
  15.     """Fala os resultados da tabuada."""
  16.     for resultado in resultados:
  17.         # Substitui " vezes " por " X " na impressão, mantendo " vezes " na fala
  18.         print(resultado.replace(" vezes ", " X "))
  19.         engine.say(resultado)
  20.     engine.runAndWait()
  21.  
  22. def obter_entrada_do_usuario(prompt):
  23.     """Obtém a entrada do usuário com tratamento de erro para números inválidos."""
  24.     while True:
  25.         try:
  26.             return int(input(prompt))
  27.         except ValueError:
  28.             print('Por favor, insira um número inteiro válido.')
  29.  
  30. def main():
  31.     engine = inicializar_engine()
  32.     engine.setProperty("voice", "brazil")
  33.  
  34.     numero = obter_entrada_do_usuario('\nDeseja a tabuada de qual número? \n')
  35.     num_linhas = obter_entrada_do_usuario('\nQuantas linhas deseja para a tabuada? \n')
  36.  
  37.     tabuada = gerar_tabuada(numero, num_linhas)
  38.  
  39.     print('\n')
  40.     falar_resultados(engine, tabuada)
  41.  
  42.     engine.stop()
  43.  
  44. if __name__ == '__main__':
  45.     main()
Tags: python python3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement