# Scrivere un programma che stampa a video e salva # su file la forma di un quadrato. # Il programma chiede all'utuente di inserire # un carattere, la lunghezza del lato e # il nome del file da scrivere. # Il programma deve verificare l'input dell'utente # e se inseirsce più di un carattere allora richiede # di inserire il carattere. # Se la lunghezza non è un numero intero positivo # valido richiede all'utente di inserirla. # Una volta acquisiti i dati, il programma deve # generare il quadrato. # Ad esempio, se il carattere è '$' e la lunghezza # è 5 si avrà: # $$$$$ # $ $ # $ $ # $ $ # $$$$$ # La generazione della stringa da stampare deve # essere implementata in una apposita funzione # che prende in ingresso i dati del carattere e # della lunghezza e restituisce la stringa. # I valori di default della funzione sono # lungezza 3 e carattere "%" # La stringa così generata deve essere stampata a # video e scritta sul file. # La scrittura sul file deve essere eseguita tramite # una apposita procedura che prende in ingresso il # nome del file ed esegue la scrittura sul file # utilizzando il costrutto with ############################################ # SOLUZIONE # Funzioni # Le funzioni usate nel programma principale possono essere # chiamate solo se definite prima della chiamata. # Usando "def" l'interprete inserisce nello spazio dei nomi # le funzioni da noi definite. # funzione creaQuadrato # Crea la stringa chiamata "stringaCompleta" componendo i vari pezzi. # Si può provare come funzionano i vari pezzi con la console def creaQuadrato(carattere="%", lunghezza=3): stringaBordi = (carattere * lunghezza) + "\n" stringaCentrale = carattere + " " * (lunghezza - 2) + carattere + "\n" stringaCompleta = stringaBordi for i in range(lunghezza-2): stringaCompleta += stringaCentrale stringaCompleta += stringaBordi return stringaCompleta # procedura scriSuFile # Dato un nome e una stringa apre il file in modalità scrittura # e scrive la stringa sul file. def scriviSuFile(stringa, nomefile): with open(nomefile, "w") as miofile: miofile.write(stringa) # Programma prinicpale: Sequenza di istruzioni che # verranno eseguite in ordine dall'interprete. # Si può pensare come diviso in due parti: # La prima parte è dedicata alle istruzioni di # input per l'ottenimento dei dati richiesti. # La seconda parte è dedicata alle funzionalità # da eseguire sui dati ottenuti. # Parte 1: input dei dati. # 1. Chiedo un singolo carattere all'utente carattere = "" while len(carattere) != 1: carattere = input("inserisci un carattere: ") # 2. Chiedo un intero positivo valido lunghezza = 0 while lunghezza < 1: try: lunghezza = int(input("inserisci la lunghezza: ")) except: print("errore, riprova") # 3. Chiedo il nome del file nomefile = input("inserisci il nome del file: ") # Parte 2: esecuzione delle operazioni richieste # Chiamo la funzione creaQuadrato con 2 argomenti e # assegno il risultato alla variabile stringaRisultante stringaRisultante = creaQuadrato(carattere, lunghezza) # Stampo la stringa creata dalla funzione. print(stringaRisultante) # Scrivo sul file la stessa stringa usando la procedura # scriviSuFile. scriviSuFile(stringaRisultante, nomefile)