PDA

View Full Version : [Python]Time e print


VirtualFlyer
07-04-2010, 12:56
Ciao a tutti,
volevo sapere se è possibile questo:

import time
a=1
b=1
while a==1:
print b
if b==5:
a=0
time.sleep(1)


ecco, questo è solo un esempio stupido, ma vorrei sapere se se al posto di dare questo risultato:
1
2
3
4
5
posso fargli dare questo:
1 2 3 4 5

P.S.
Ho quasi finito di studiarmi Pensare da Informatico e vorrei sapere cosa mi consigliate per proseguire:
da qui avevo selezionato questi tre come candidati migliori:
Imparare Python
Python in a Nutshell
Python Cookbook
secondo voi?

OT
Che fine ha fatto il progetto Diamonds?

cdimauro
07-04-2010, 14:16
Ciao a tutti,
volevo sapere se è possibile questo:

import time
a=1
b=1
while a=1:
print b
if b==5:
a=0
time.sleep(1)

Questo codice non dovrebbe funzionare (causa while a=1: che dovrebbe essere invece while a == 1: :D).
ecco, questo è solo un esempio stupido, ma vorrei sapere se se al posto di dare questo risultato:
1
2
3
4
5
posso fargli dare questo:
1 2 3 4 5
Usa
print b,
P.S.
Ho quasi finito di studiarmi Pensare da Informatico e vorrei sapere cosa mi consigliate per proseguire:
da qui avevo selezionato questi tre come candidati migliori:
Imparare Python
Python in a Nutshell
Python Cookbook
secondo voi?
Personalmente ti consiglio il primo.
OT
Che fine ha fatto il progetto Diamonds?
La sezione è stata dismessa, ma tutti i messaggi sono stati "assorbiti" dalla sezione madre (questa).

VirtualFlyer
07-04-2010, 14:52
Questo codice non dovrebbe funzionare (causa while a=1: che dovrebbe essere invece while a == 1: :D).

Usa
print b,


La sezione è stata dismessa, ma tutti i messaggi sono stati "assorbiti" dalla sezione madre (questa).

Effettivamente è un errore che faccio sempre! :D

Avevo pensato così, ma non credevo di poter eseguire una funzione all'interno di print.
Un'altra cosa: per caso sai come si fa a far riprodurre un suono durante un programma? Pensavo di dover usare qualche modulo, ma non so cosa provare


EDIT: Ho provato con
print 'h',
time.sleep(3),
print 'o'
ma il risultato è che aspetta 3 secondi poi scrive 'h o'! Idee?

cdimauro
07-04-2010, 21:27
Effettivamente è un errore che faccio sempre! :D

Avevo pensato così, ma non credevo di poter eseguire una funzione all'interno di print.
Sì, si può fare, ma quella non è una funzione. :D

La virgola finale serve a indicare a print di non stampare un \n alla fine.
Un'altra cosa: per caso sai come si fa a far riprodurre un suono durante un programma? Pensavo di dover usare qualche modulo, ma non so cosa provare

EDIT: Ho provato con
print 'h',
time.sleep(3),
print 'o'
ma il risultato è che aspetta 3 secondi poi scrive 'h o'! Idee?
sleep serve soltanto a mettere in pausa il thread corrente per un certo numeor di secondi.

Per riprodurre un suono per Windows c'è il modulo winsound: winsound.MessageBeep()

VirtualFlyer
08-04-2010, 18:36
sì, è vero poi ho letto, un po', comunque non comprendo come mai non scriva prima h e poi aspetti e invece aspetti e poi scriva ho.

Nel frattempo ho preso Imparare Python, sembra fatto bene, più o meno è simile all'altro, ma più approfondito.

P.S.
Posso aggiungere uno script Python in un html tipo javascript?

cdimauro
08-04-2010, 18:59
sì, è vero poi ho letto, un po', comunque non comprendo come mai non scriva prima h e poi aspetti e invece aspetti e poi scriva ho.
A me sembra a posto il tuo codice, a parte la virgola dopo lo sleep:
print 'h',
time.sleep(3),
print 'o'
Dovresti scrivere così, invece:
print 'h',
time.sleep(3)
print 'o'
Ma non cambia sostanzialmente nulla, perché prima stampa la h, poi aspetta 3 secondi, e infine stampa la o (e va a capo).
P.S.
Posso aggiungere uno script Python in un html tipo javascript?
C'è PyHP (http://www.pyhp.org/), oppure mod-python usando l'handler PSP (http://www.modpython.org/live/current/doc-html/pyapi-psp.html).

VirtualFlyer
09-04-2010, 15:53
A me sembra a posto il tuo codice, a parte la virgola dopo lo sleep:
print 'h',
time.sleep(3),
print 'o'
Dovresti scrivere così, invece:
print 'h',
time.sleep(3)
print 'o'
Ma non cambia sostanzialmente nulla, perché prima stampa la h, poi aspetta 3 secondi, e infine stampa la o (e va a capo).


Credo proprio ch dovrò rassegnarmi, continua ad avere lo stesso comportamento anche con il tuo codice... :cry:

||ElChE||88
09-04-2010, 16:01
Prova a fare sys.stdout.flush() dopo al primo print...

VirtualFlyer
09-04-2010, 16:08
Prova a fare sys.stdout.flush() dopo al primo print...

Grazie mille! Finalmente funziona, mi spieghi cosa fa di preciso la tua funzione?

||ElChE||88
10-04-2010, 03:20
Grazie mille! Finalmente funziona, mi spieghi cosa fa di preciso la tua funzione?
Forza lo svuotamento del buffer dello standard output stream.