Forum >> Programmazione Python >> Scripting >> Ma perchè non funziona??

Pagina: 1

ciao a tutti,
ho un problemino con un semplice script...e non capisco proprio dove sbaglio...

Sostanzialmente è un programmino per far funzionare una mangiatoia a ore prestabilite. Nel file mangiatoia_1.txt inserisco l'orario a cui vorrei che partisse e distribuisse il cibo. Ovviamente poi sarà collegata con GPIO per farla funzionare.




Il problema è che non mi restituisce il m ==t e non capisco proprio il perchè...

qualcuno riesce ad aiutarmi?

Grazie

Ema




#!/usr/bin/python
# -*- coding: utf-8 -*-
import time


#CIBO

while True:
    t= time.strftime("%H:%M")
    mangiatoia_1 = open ("mangiatoia_1.txt", "r")
    m = mangiatoia_1.readline()
    print(m,t)
    
    if m == t:
        print (t,'mangiatoia on')
    else:
        print (t,('mangiatoia off'))
        
    
    time.sleep(15)

Prova a stampare la lunghezza delle stringhe che confronti, e anche i codici dei caratteri che le compongono.
*** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione ***
Prova a stampare la lunghezza delle stringhe che confronti, e anche i codici dei caratteri che le compongono.

purtroppo il risultato non cambia... :(
if mangiatoia_1.readline() == time.strftime("%H:%M"):


Non va perché è esattamente la stessa cosa.

Riscrivo il suggerimento sotto forma di domande...

Quanto sono lunghe le stringhe m e t ? (verificarlo con len(str))
Da che caratteri sono composte? (stamparli uno per uno con ord(char))
Sono uguali? (beh, no, questo già è intuibile, quale differenza hanno?)
*** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione ***
Non va perché è esattamente la stessa cosa.

Riscrivo il suggerimento sotto forma di domande...

Quanto sono lunghe le stringhe m e t ? (verificarlo con len(str))
Da che caratteri sono composte? (stamparli uno per uno con ord(char))
Sono uguali? (beh, no, questo già è intuibile, quale differenza hanno?)

Grazie, ora ho risolto.

if m == time.strftime("%H:%M"):
effettivamente mi da due lunghezze di stringhe diverse se uso "m" o "mangiatoia_1.readline()", anche se non ho capito perchè. Se gli dico che "m==mangiatoia_1.readline()" non dovrebbero essere identici?

Grazie ancora e scusa per la mia ignoranza ma come avrai capito non sono proprio un'esperto in materia... ;)















non dovrebbero essere identici?
def stampaquestabenedettastringa(benedettastringa):
    print("Lunghezza: %d" % len(benedettastringa))
    print("DEC  HEX   CHR")
    for carattere in benedettastringa:
        codice = ord(carattere)
        ch = carattere if 32 <= codice <= 126 else repr(carattere)[1:-1]
        print("%3d  %02X    %s" % (codice, codice, ch))
--- Ultima modifica di Claudio_F in data 2016-06-24 16:12:12 ---
*** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione ***


Pagina: 1



Esegui il login per scrivere una risposta.