首页 > 解决方案 > TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是“NoneType”(HTML 将输入发送到 Python)

问题描述

#!C:\Users\aan\AppData\Local\Programs\Python\Python39\python.exe
import numpy as np
import skfuzzy as fuzz
import cgi
from skfuzzy import control as ctrl
print("Content-type:text/html\r\n\r\n")
form = cgi.FieldStorage()

def fuz():
    temperature = ctrl.Antecedent(np.arange(0,100,1), 'temperature')
    humidity = ctrl.Antecedent(np.arange(0,100,1), 'humidity')
    heatfan = ctrl.Consequent(np.arange(0,100,1), 'heatfan')
    coldfan = ctrl.Consequent(np.arange(0,100,1), 'coldfan')
    humidifier = ctrl.Consequent(np.arange(0,100,1), 'humidifier')

    ############################################################################ MEMBERSHIP
    temperature['very_cold'] = fuzz.trapmf(temperature.universe, [0,0,14,15])
    temperature['cold'] = fuzz.trapmf(temperature.universe, [11,15,21,22])
    temperature['normal'] = fuzz.trapmf(temperature.universe, [21,22,28,30])
    temperature['hot'] = fuzz.trapmf(temperature.universe, [29,29,35,36])
    temperature['very_hot'] = fuzz.trapmf(temperature.universe, [35,36,100,100])

    
    humidity['very_dry'] = fuzz.trapmf(humidity.universe, [0,0,39,40])
    humidity['dry'] = fuzz.trapmf(humidity.universe, [39,40,59,60])
    humidity['moist'] = fuzz.trapmf(humidity.universe, [59,60,80,81])
    humidity['wet'] = fuzz.trapmf(humidity.universe, [79,81,100,100])


    heatfan['off'] = fuzz.trapmf(heatfan.universe, [0,0,9,10])
    heatfan['slow'] = fuzz.trapmf(heatfan.universe, [5,10,50,60])
    heatfan['fast'] = fuzz.trapmf(heatfan.universe, [50,60,100,100])


    coldfan['off'] = fuzz.trapmf(coldfan.universe, [0,0,9,10])
    coldfan['slow'] = fuzz.trapmf(coldfan.universe, [9,10,59,60])
    coldfan['fast'] = fuzz.trapmf(coldfan.universe, [59,60,100,100])


    humidifier['off'] = fuzz.trapmf(humidifier.universe, [0,0,9,10])
    humidifier['low'] = fuzz.trapmf(humidifier.universe, [9,10,59,60])
    humidifier['high'] = fuzz.trapmf(humidifier.universe, [59,60,100,100])


    rule1=ctrl.Rule((temperature['very_cold']&humidity['very_dry']),(coldfan['off'],heatfan['fast'],humidifier['high']))
    rule2=ctrl.Rule((temperature['cold']&humidity['very_dry']),(coldfan['off'],heatfan['slow'],humidifier['high']))
    rule3=ctrl.Rule((temperature['normal']&humidity['very_dry']),(coldfan['off'],heatfan['off'],humidifier['high']))
    rule4=ctrl.Rule((temperature['hot']&humidity['very_dry']),(coldfan['slow'],heatfan['off'],humidifier['high']))
    rule5=ctrl.Rule((temperature['very_hot']&humidity['very_dry']),(coldfan['fast'],heatfan['off'],humidifier['high']))
    rule6=ctrl.Rule((temperature['very_cold']&humidity['dry']),(coldfan['off'],heatfan['fast'],humidifier['low']))
    rule7=ctrl.Rule((temperature['cold']&humidity['dry']),(coldfan['off'],heatfan['slow'],humidifier['low']))
    rule8=ctrl.Rule((temperature['normal']&humidity['dry']),(coldfan['off'],heatfan['off'],humidifier['low']))
    rule9=ctrl.Rule((temperature['hot']&humidity['dry']),(coldfan['slow'],heatfan['off'],humidifier['low']))
    rule10=ctrl.Rule((temperature['very_hot']&humidity['dry']),(coldfan['fast'],heatfan['off'],humidifier['low']))
    rule11=ctrl.Rule(((temperature['very_cold']&humidity['moist'])|(temperature['very_cold']&humidity['wet'])),(coldfan['off'],heatfan['fast'],humidifier['off']))
    rule12=ctrl.Rule(((temperature['cold']&humidity['moist'])|(temperature['cold']&humidity['wet'])),(coldfan['off'],heatfan['slow'],humidifier['off']))
    rule13=ctrl.Rule(((temperature['normal']&humidity['moist'])|(temperature['normal']&humidity['wet'])),(coldfan['off'],heatfan['off'],humidifier['off']))
    rule14=ctrl.Rule(((temperature['hot']&humidity['moist'])|(temperature['hot']&humidity['wet'])),(coldfan['slow'],heatfan['off'],humidifier['off']))
    rule15=ctrl.Rule(((temperature['very_hot']&humidity['moist'])|(temperature['very_hot']&humidity['wet'])),(coldfan['fast'],heatfan['off'],humidifier['off']))
    output_f_ctrl = ctrl.ControlSystem([rule1, rule2, rule3, rule4, rule5, rule6, rule7, rule8, rule9, rule10, rule11, rule12, rule13, rule14, rule15])
    output_f = ctrl.ControlSystemSimulation(output_f_ctrl)
    temp = int(form.getvalue('temp'))
    hum = int(form.getvalue('hum'))
    output_f.input['temperature'] = temp
    output_f.input['humidity'] = hum
    print("Current Temperature =",temp)
    print("Current Humidity =",hum)
    output_f.compute()
    cfspeed=output_f.output['coldfan']
    hfspeed=output_f.output['heatfan']
    humidifier_s=output_f.output['humidifier']
    print("Heat_Fan =",hfspeed)
    print("Cold_Fan =",cfspeed)
    print("Humidifier =",humidifier_s)


fuz()

当我尝试获取 HTML 表单输入并将其作为输入发送到 python 时,我收到此错误TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'任何人都知道为什么?也许是因为那里的温度和嗡嗡声输入?当我删除 int() 代码也无法运行......

标签: pythonhtml

解决方案


这是因为该值为 NoneType (即函数没有返回任何内容)。例如:

temp = int(form.getvalue('temp'))

form.getvalue('temp') 正在返回 NoneType

'temp'字段是否可能不存在?


推荐阅读