Forum
>>
Programmazione Python
>>
IDE ed Editor
>>
Programmare in python
Pagina: 1 2 Avanti
Esegui il login per scrivere una risposta.
Scritto da erik84 |
2019-01-23 22:31:08 - Programmare in python
|
Salve, ho iniziato da poco ad approcciarmi a python, seguendo vari tutorial e leggendo varie guide e facendo piccole prove, andando anche a modificare qualche script per vedere i vari effetti... Ora stavo provando a scrivere qualcosa da solo, ma nn essendo un'esperto sono incappato in alcuni problemi:
ho creato un menu testuale, (gioca, aiuto, esci) guardando altri script ho visto che alcune funzioni le richiamano tramite altri script (tramite il comando import), ho cercato di ricreare la stessa cosa ma nn con i risultati sperati, mi mostra il contenuto testuale dentro lo script aiuto ma alla fine esce dal programma, invece io vorrei tornare indietro mi potete aiutare a capire come si fa? |
|
Scritto da pypy pypy |
2019-01-24 00:16:58 - Re: Programmare in python
|
ciao erik84
credo che sia doveroso da parte tua postare il codice di cui stai parli, compreso il risultato di cui dici che non ti soddisfa, se no diventa difficile aiutarti non credi? |
|
Scritto da erik84 |
2019-01-24 06:45:01 - Re: Programmare in python
|
hai ragione nn ci ho pensato
questo è il codice per il menu principale #!/usr/bin/python # -*- coding: UTF-8 -*- import sys import os import time import random import aiuto ################### # Menu principale # ################### def title_screen_options(): option = input("> ") if option.lower() == ("gioca"): setup_game() elif option.lower() == ("aiuto"): aiuto.help_menu() elif option.lower() == ("esci"): sys.exit() while option.lower() not in ['gioca', 'aiuto', 'esci']: print("Comando invalido, riprova.") option = input("> ") if option.lower() == ("gioca"): setup_game() elif option.lower() ==("aiuto"): aiuto.help_menu() elif option.lower() == ("esci"): sys.exit() def title_screen(): #Clears the terminal of prior code for a properly formatted title screen. os.system('clear') #Prints the pretty title. print(" .: Gioca :. ") print(" .: Aiuto :. ") print(" .: Esci :. ") title_screen_options() ################# # Game Handling # ################# quitgame = 'esci' title_screen() questo invece è il codice della pagina che vado ad aprire su un'altro script #!/usr/bin/python # -*- coding: UTF-8 -*- import sys import os import time import random ############# # Help Menu # ############# def help_menu(): print("") print('#' * 60) print("Scritto da Erik") print("Versione Finale (0.0.1)") print("~" * 60) print("Prova di import script esterni") print('#' * 60) print("\n")quando mi mostra questa pagina lo script si chiude e mi ritorna alla riga di comando del terminale, invece vorrei tornare al menu principale, ho provato ad importare lo script del menu principale aggiungendo (import menu) all'inizio e mettendo come ultima riga menu.title_screen_options() usando lo stesso procedimento che ho usato per richiamare l'aiuto ma mi genera degli errori di sintassi sia nel menu principale sia nell'aiuto.... Scusa l'impaginazione ma nn sono riuscito a sistemarla --- Ultima modifica di erik84 in data 2019-01-24 06:48:15 --- |
|
Scritto da pypy pypy |
2019-01-24 11:30:08 - Re: Programmare in python
|
ciao erik84
dal codice che hai postato stai lavorando in linux giusto? non sono molto esperto ma da quel che vedo ci sono alcune cose che io cambierei tipo: 1) "import aiuto" sei sicuro di questo modulo? 2) il while in quel punto non credo che ti serva essendo che una volta terminata l'esecuziona non verrà mai eseguito al limite lo dovresti rientrare 3) se ho capito bene quello che intendi fare dovresti inserire la stringa: "title_screen_options()" nel punto in cui ti interessa in modo da richiamarlo di nuovo tienici aggiornato |
|
Scritto da erik84 |
2019-01-24 12:55:24 - Re: Programmare in python
|
L'ho iniziato su windows perché ero all'estero e nel pc aziendale c'è quello, adesso che sono a casa con Linux ho visto che per funzionare aveva bisogno di quelle due righe se no mi dava errori nelle frasi dove c'erano caratteri speciali...
Il nome del modulo sono sicuro perché il file l'ho chiamato così, corto e facile a scrivere e ricordare. Il ciclo while a parte che era parte di un altro progetto nn scritto da me, serve se invece di scrivere correttamente gioca, aiuto, esci ti sbagli allora ti dice di controllare e riscrivere, almeno io lo intendo così... Ho provato ad aggiungere nello script aiuto alla fine del testo title_screen_option() ma mi genera 2 righe di errore perché nn lo riconosce all'interno di quello script |
|
Scritto da pypy pypy |
2019-01-24 14:07:02 - Re: Programmare in python
|
per il ciclo while come già detto non credo che ti serva così come lo hai postato io fare in questo modo:
def title_screen_options(): option = input("> ") if option.lower() == ("gioca"): setup_game() elif option.lower() == ("aiuto"): aiuto.help_menu() elif option.lower() == ("esci"): sys.exit() else: print("Comando invalido, riprova.") title_screen_options() oppure se vuoi usare il while questa è un'alternativa: def title_screen_options(): option = input("> ") while option.lower() not in ["gioca", "aiuto", "esci"]: print("Comando invalido, riprova.") option = input("> ") if option.lower() == ("gioca"): setup_game() elif option.lower() == ("aiuto"): aiuto.help_menu() elif option.lower() == ("esci"): sys.exit() --- Ultima modifica di pypy in data 2019-01-24 14:32:11 --- |
|
Scritto da erik84 |
2019-01-24 15:26:56 - Re: Programmare in python
|
Cosi si è ottimizzato il codice 😅... Grazie quello lo sistemo quando arrivo a casa
|
|
Scritto da erik84 |
2019-01-24 19:13:23 - Re: Programmare in python
|
ottimo bastava sistemare quel ciclo while, per far funzionare il tutto ora nn esce più dal progetto e riesco a chiamare lo script aiuto senza crearmi problemi, posso fare una domanda a seguito di questo script? nn ho postato il codice completo ma solo la parte che volevo sistemare, ma se lancio il comando gioca partono una serie di domande a cui rispondere, solo che ho notato che se mentre scorre il testo (è fatto in modo che con un tempo definito compaiono le lettere in sequenza) premo invio la frase nn si completa nella stessa riga ma va a capo, c'è un modo per bloccare la funzione del tasto invio finchè nn è comparsa tutta la frase?
E' fatto in questa maniera: question1 = "Ciao qual'è il tuo nome?\n" for character in question1: #This will occur throughout the intro code. It allows the string to be typed gradually - like a typerwriter effect. sys.stdout.write(character) sys.stdout.flush() time.sleep(0.05) player_name = input("> ") player1.name = player_name |
|
Scritto da pypy pypy |
2019-01-24 19:46:53 - Re: Programmare in python
|
far prendere una piccola scossa a chi prova a premere invio ahahahah
skerzo ovviamente, sinceramente non l'ho mai fatta una cosa simile come ti dicevo non sono molto esperto in python da poco lo uso sui cicli etc è una cosa che facevo tempo fa quindi mi è rimasta sfizioso come script il testo che scorre mi è piaciuto lascio il campo a chi sicuramente ti saprà dare una risposta alla prossima |
|
Scritto da pypy pypy |
2019-01-25 13:59:58 - Re: Programmare in python
|
cercando in rete ho trovato questa soluzione che forse potrebbe fare a caso tuo
! ATTENZIONE HO LETTO CHE QUESTE OPERAZIONI SONO SCONSIGLIATE ! (dopo l'esecuzione del codice debbo sbloccare il tasto CTRL che risulta premuto) from ctypes import * windll.user32.BlockInput(True) question1 = "Ciao qual'è il tuo nome?\n" for character in question1: print(character, end="") time.sleep(0.05) windll.user32.BlockInput(False)questo ciclo for credo sia una buona alternativa per chi come me cerca di minimizzare PS NON CONOSCO QUESTA LIBRERIA ED IL SUO FUNZIONAMENTO QUINDI NON GARANTISCO NULLA E CHI LO USA LO FA NELLA SUA PIENA RESPONSABILITÀ --- Ultima modifica di pypy in data 2019-01-25 14:01:38 --- |
Pagina: 1 2 Avanti
Esegui il login per scrivere una risposta.