If语句(python/html)

If语句(python/html),python,html,Python,Html,我试图计算税收,但每当我试图执行if语句时,它会说“BC”未定义。关于税收的国际单项体育联合会声明已接近尾声。欢迎提供任何帮助。这是我的密码: 导入cgi form=cgi.FieldStorage() #打印HTTP/HTML头文件 打印“”内容类型:文本/html 订单 """ #使用表单数据打印HTML正文 印刷“专业画家” 打印“客户接收” 打印“客户名称:”,表单[“客户名称]。值“” 打印“客户电子邮件地址:”,表单[“customerEmail”]。值“” 打印“客户地址:” 打印

我试图计算税收,但每当我试图执行if语句时,它会说“BC”未定义。关于税收的国际单项体育联合会声明已接近尾声。欢迎提供任何帮助。这是我的密码: 导入cgi form=cgi.FieldStorage()

#打印HTTP/HTML头文件
打印“”内容类型:文本/html
订单
"""
#使用表单数据打印HTML正文
印刷“专业画家”
打印“客户接收”
打印“客户名称:”,表单[“客户名称]。值“

” 打印“客户电子邮件地址:”,表单[“customerEmail”]。值“

” 打印“客户地址:” 打印“街道:”表格[“客户添加”]。值“

” 打印“City:”,表单[“customerCity”]。值“

” 打印“省:”,表单[“customerProv”]。值“

” 打印“邮政编码:”,表单[“customerPostal”]。值“

” 打印“付款信息:” 打印“卡片类型:”,表单[“类型1”]。值“

” 打印“卡号:XXXX-XXXX-XXXX-”,表格[“four4”]。值“

” 打印“到期日期:”,表格[“到期”]。值“

” 打印“订购的产品” q1=整数(形式[“数量”]值)*2 q2=int(形式[“数量2”].值)*1 q3=整数(形式[“数量3”]值)*150 q4=整数(形式[“数量4”]值)*3 q5=int(形式[“数量5”]值)*10 如果form.getvalue(“内部”): 打印“内部喷漆数量:”,表格[“数量”]。值“

” 打印“成本:$”,第1季度“.00

” 其他: q1=0 打印“内部喷漆数量:0
成本:$0

” 如果form.getvalue(“外部”): 打印“外部喷漆数量:”,表格[“数量2”]。值“

” 打印“成本:$”,第二季度“.00” 其他: q2=0 打印“外部喷漆数量:0
成本:$0

” 如果form.getvalue(“压力”): 打印“压力清洗量:”,表格[“量3”]。值“

” 打印“成本:$”,第三季度“.00

” 其他: q3=0 打印“压力清洗量:0
成本:$0

” 如果form.getvalue(“wood”): 打印“木材饰面数量:”,表格[“数量4”]。值“

” 打印“成本:$”,整数(表格[“数量4”].value)*3,“.00

” 其他: q4=0 打印“木屑数量:0
成本:$0

” 如果form.getvalue(“spraycan”): 打印“喷雾罐数量:”,表格[“数量5”]。值“

” 打印“成本:$”,整数(表格[“数量5”].value)*10,“.00

” 其他: q5=0 打印“喷雾罐数量:0
成本:$0

” 如果form.getvalue(“电子邮件”): 打印“电子邮件通知将发送到”,表单[“customerEmail”]。值,

” 总计=q1+q2+q3+q4+q5 打印“购买商品的总成本为美元:”,总计 def折扣(): 返回浮动(总计*0.15) disc=折扣() disc2=0 如果总数>150: 打印“折扣:$”,浮动(光盘),“

” 其他: 总计150,格式为[“customerProv”]。值==BC或BC或BC: 打印“税:$”,浮动((总光盘))*0.12“

” elif总计150和表格[“customerProv”]。值==BC或BC或BC或BC和form.getvalue(“giftwrap”): 打印“税:$”,浮动((总光盘)+giftwrp))*0.12“

” elif总计<150且形式为[“customerProv”]。值==BC或BC或BC或BC且形式为.getvalue(“giftwrap”): 打印“税:$”,浮动((总计+giftwrp))*0.12,

“ elif总计>150,并形成[“customerProv”]。值!=卑诗省或卑诗省或卑诗省或卑诗省: 打印“税:$”,浮动((总光盘))*0.12“

” elif总计150和表格[“customerProv”]。值!=BC或BC或BC或BC和form.getvalue(“giftwrap”): 打印“税:$”,浮动((总光盘)+giftwrp))*0.12“

” elif总计<150,并形成[“客户批准”]。值!=BC或BC或BC或BC和form.getvalue(“giftwrap”): 打印“税:$”,浮动((总计+giftwrp))*0.12,

“ 打印“”
您正在引用变量
BC
BC
等等:

if total > 150 and form["customerProv"].value == BC or bc or Bc or bC:
…但你从来没有告诉Python它们的意思!因此Python向您抛出了一个错误。你想用字符串吗

if total > 150 and form["customerProv"].value == "BC" or "bc" or "Bc" or "bC":
不过,这也将失败。这是因为在Python中不能像这样链接
。应分别检查每个值的相等性:

if total > 150 and form["customerProv"].value == "BC" or form["customerProv"].value == "bc" or form["customerProv"].value == "Bc" or form["customerProv"].value == "bC":
如果要将一个值与一组其他值进行比较,另一个选项是以下(更整洁?)代码:

if total > 150 and form["customerProv"].value in {"BC", "bc", "Bc", "bC"}:
…检查值是否在该集合中

在您的特定情况下,最简洁的方法是注意,您正在对同一字符串的一组不同大小写版本进行比较。如果将要比较的字符串转换为大写,则可以非常简单地进行比较:

if total > 150 and form["customerProv"].value.upper() == "BC":

(建议)

这仍然不起作用,因为
的“BC”或“BC”
总是正确的。是的,在我发布答案后就发现了这一点。。。我这方面的一个不幸疏忽!我一直在编辑我的帖子来修复它:如果总数大于150,我甚至可以使用
和form[“customerProv”].value.upper()='BC':
,而不是设置这是真的,而且更整洁!我当时的想法是,这是一个关于链接比较的更一般的问题,不过,在这种情况下,集合可能是最整洁的处理方法。但我会在我的答案中加入这一点,因为这是一种非常巧妙的方式来完成他正在做的事情
if total > 150 and form["customerProv"].value.upper() == "BC":