Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # am_util.py
- # uma coleção de ferramentas com potencial
- # de utilidade entre projetos
- # objetivo é ilustrar: reutilização de código a partir de import
- def tabelaDeSimbolos(
- pCodigoInicial:int=0,
- pCodigoDeParagem:int=128, # representa o código de paragem
- pOrdemAscendente:bool=True,
- pbVerbose:bool=False # faz print se True
- ):
- strTabelaDeSimbolos:str=""
- codigo:int = None
- if(pOrdemAscendente):
- codigo = pCodigoInicial
- else:
- codigo = pCodigoDeParagem-1
- # if-else
- bDevoContinuar: bool = True
- while (bDevoContinuar):
- simbolo = chr(codigo)
- linha: str = f"{codigo} : {simbolo}"
- strTabelaDeSimbolos+=linha+"\n" # concatenação cumulativa
- #print(linha) # print incondicional
- #if (pbVerbose==True):
- if(pbVerbose):
- print(linha, sep="")
- #else
- if(pOrdemAscendente):
- codigo += 1 # codigo = codigo + 1
- bDevoContinuar = codigo < pCodigoDeParagem
- else:
- codigo -= 1 # codigo = codigo - 1
- bDevoContinuar = codigo >= 0 # condição de continuidade
- # if-else
- # while
- return strTabelaDeSimbolos
- # def tabelaDeSimbolos
- """
- TODO: o que é acontece quando o utilizador responder
- inputs que não são transformáveis em inteiros?
- """
- def pedeInteiro(
- pStrPergunta:str,
- pbVerbose:bool=False
- ):
- resposta:str = input(pStrPergunta) # "0"
- iResposta = int(resposta) # 0
- strFeedback:str = f"Recebi o inteiro {iResposta}\n"
- if(pbVerbose):
- print(strFeedback)
- # if
- return iResposta
- # def pedeInteiro
- def pedeFrase(
- pStrPergunta:str,
- pbVerbose:bool=False
- ):
- resposta = input(pStrPergunta)
- if(pbVerbose):
- strFeedback:str=f"Recebi a resposta \"{resposta}\"\n"
- print(strFeedback)
- # if
- return resposta
- # def pedeFrase
- """
- Esta função serve para escrever conteúdo para um ficheiro de texto
- Recebe o nome do ficheiro de texto pelo param pStrNomeDoFicheiro
- Recebe uma frase que é o conteúdo do ficheiro
- A escrita é feita em modo NÃO DESTRUTIVO (append)
- retorna True em caso de sucesso; c.c. retorna False
- """
- def escreverFicheiroDeTexto(
- pStrNomeDoFicheiro:str,
- pStrConteudo:str=""
- )->bool:
- fa =\
- open(
- file=pStrNomeDoFicheiro,
- mode="a" #w wt wb #a at
- )
- if(fa):
- fa.write(pStrConteudo)
- fa.close()
- return True
- # if
- return False
- # def escreverFicheiroDeTexto
- ***********************************
- # 4.py
- #from am_util import *
- from am_util import \
- tabelaDeSimbolos, pedeFrase, \
- pedeInteiro, escreverFicheiroDeTexto
- """
- Escrever um programa para escrita de tabelas de símbolos em ficheiro.
- Ao utilizador deverá perguntar-se:
- - o código inicial da tabela;
- - o código final da tabela;
- - um nome para a tabela;
- - um nome para o ficheiro.
- """
- codigoInicial = pedeInteiro("Código inicial da tabela?", pbVerbose=True)
- codigoFinal = pedeInteiro("Código final da tabela?", pbVerbose=True)
- nomeParaTabela = pedeFrase("Nome a sua tabela personalizada?", pbVerbose=True)
- nomeParaFicheiro = pedeFrase("Nome o ficheiro onde gravar a tabela?", pbVerbose=True)
- """
- strFeedback =\
- f"Valores recebidos: ci={codigoInicial} cf={codigoFinal}"+\
- f"nome para tabela={nomeParaTabela} fich={nomeParaFicheiro}\n"
- print(strFeedback)
- """
- strTabelaDeSimbolos:str =\
- tabelaDeSimbolos(
- codigoInicial,
- codigoFinal
- )
- strTodoConteudoQueVaiSerEscrito =\
- nomeParaTabela+"\n"+strTabelaDeSimbolos
- bFoiPossivelEscrever:bool =\
- escreverFicheiroDeTexto(
- nomeParaFicheiro,
- strTodoConteudoQueVaiSerEscrito
- )
- if (bFoiPossivelEscrever):
- print("Sucesso, ficheiro escrito.")
- else:
- print("Falhou a escrita do ficheiro.")
Advertisement
Add Comment
Please, Sign In to add comment