Seite 1 von 1

Syntaxerror und Srings

Verfasst: Donnerstag 10. Mai 2018, 13:25
von GuardDog
Hallo Leute,

ich habe hier diesen Code:

Code: Alles auswählen

import time, os, lcddriver

lcd = lcddriver.lcd()

def get_cpu_temp():
        tempFile = open("/sys/class/thermal/thermal_zone0/temp")
        cpu_temp = tempFile.read()
        tempFile.close()
        return float(cpu_temp)/1000

def get_cpu_speed():
        tempFile = open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq")
        cpu_speed = tempFile.read()
        tempFile.close()
        return float(cpu_speed)/1000
    
lcd.lcd_clear()

while True:
    get_cpu_temp
    get_cpu_speed
    line1 = "CPU Temp:" and cpu_temp
    line2 = "CPU Speed:" and cpu_speed
    lcd.lcd_display_string(line1, 1)
    lcd.lcd_display_string(line2, 2)
    time.sleep(5)
und möchte erstens Fragen wie man einen String und eine Variable "zusammenpackt" (Habe das jetzt mit and gemacht, hoffe es geht.)
und zweitens: ich bekomme folgenden Fehler:

Code: Alles auswählen

Traceback (most recent call last):
  File "cpu.py", line 21, in <module>
    line1 = "CPU Temp:" and cpu_temp
NameError: name 'cpu_temp' is not defined
obwohl ich "cpu_temp" doch in Zeile 7 definiert und in 219 aufgerufen habe.

Kann mir jemand helfen?

Re: Syntaxerror und Srings

Verfasst: Donnerstag 10. Mai 2018, 13:35
von __deets__
Das geht nicht mit and. Sondern mit format. Ein Blick ins Python Tutorial macht das klar.

Funktionen muss man auch aufrufen. Und ihre Rückgabewert an einen Namen binden.

Du kannst nicht durch raten programmieren. Wenigstens das offizielle Tutorial einmal durcharbeiten sollte schon sein.

Re: Syntaxerror und Srings

Verfasst: Donnerstag 10. Mai 2018, 13:50
von GuardDog
Im Endeffekt fällt mir zumindest das mit den Funktionen auf, jedoch weiß ich nicht, wie man deren Rückgabewert an Namen bindet. Könntest du/ihr mir helfen? Echt peinlich! Und danke für den Tipp mit Format.

Re: Syntaxerror und Srings

Verfasst: Donnerstag 10. Mai 2018, 14:22
von Sirius3
@GuardDog: genau das machst Du doch schon in Zeile 6, 7, 12 und 13.

Re: Syntaxerror und Srings

Verfasst: Donnerstag 10. Mai 2018, 14:28
von GuardDog
Ich war mir nicht sicher ob
blabla = return float(cpu_speed)/1000
oder
blabla = float(cpu_speed)/1000

und dann einfach ersetzten, also anstatt von return?

Re: Syntaxerror und Srings

Verfasst: Donnerstag 10. Mai 2018, 14:54
von Sirius3
@GuardDog: weder noch, Funktionsaufrufe sehen so aus:

Code: Alles auswählen

ergebnis = function(parameter)

Re: Syntaxerror und Srings

Verfasst: Donnerstag 10. Mai 2018, 15:00
von GuardDog
Nachdem ich angefangen habe nachzudenken, habe ich nun diesen Code erstellt. Nun bekomme ich "Float not iterable!", hier bin ich mit meinem Wissen am ende!

[codebox=pycon file=Unbenannt.txt]
import time, os, lcddriver

lcd = lcddriver.lcd()

def get_cpu_temp():
tempFile = open("/sys/class/thermal/thermal_zone0/temp")
cpu_temp = tempFile.read()
tempFile.close()
return float(cpu_temp)/1000

def get_cpu_speed():
tempFile = open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq")
cpu_speed = tempFile.read()
tempFile.close()
return float(cpu_speed)/1000

lcd.lcd_clear()

while True:
lcd.lcd_display_string(get_cpu_temp(), 1)
lcd.lcd_display_string(get_cpu_speed(), 2)
time.sleep(5)
[/code]

Re: Syntaxerror und Srings

Verfasst: Donnerstag 10. Mai 2018, 15:30
von Sirius3
@GuardDog: wenn gar nichts mehr hilft, geh zum Code zurück der noch funktioniert hat und schau Schritt für Schritt nach, was Du verändert hast.