Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调试Python代码中的问题?_Python_Loops_If Statement - Fatal编程技术网

如何调试Python代码中的问题?

如何调试Python代码中的问题?,python,loops,if-statement,Python,Loops,If Statement,我无法使代码最后一行的totalBill正确打印。我不知道如何让它实现用户输入,并且只使用那些if约束 计算并显示计费期间的客户用水账单 提示用户输入3个值: A.客户编码一个字符 B客户的起始电表读数为正整数值 C客户的终端仪表读数为正整数值 处理信息和显示结果 customerCode=StrInput请输入您的客户代码: begMeter=IntInput请输入您的起始电表读数: endMeter=IntInput请输入您的终端仪表读数: 用水量=端米-端米 如果begMeter>end

我无法使代码最后一行的totalBill正确打印。我不知道如何让它实现用户输入,并且只使用那些if约束

计算并显示计费期间的客户用水账单 提示用户输入3个值: A.客户编码一个字符 B客户的起始电表读数为正整数值 C客户的终端仪表读数为正整数值 处理信息和显示结果 customerCode=StrInput请输入您的客户代码: begMeter=IntInput请输入您的起始电表读数: endMeter=IntInput请输入您的终端仪表读数: 用水量=端米-端米 如果begMeter>endMeter: 用水总量=99999999-开始计量器+1+结束计量器/10 其他: waterUsedTotal=waterUsed*0.1 a=4000000 b=0.00025 d=10000000 e=0.0005 如果customerCode.lower=='r'或'r': 账单总额=5.00+用水总额*e elif customerCode.lower=='c'或'c': 如果使用了水: 账单总额=1000.00+用水总额*b elif customerCode.lower==“i”或“i”: 如果用水总a和用水总d: 账单总额=2000.00+用水总额*b 打印 打印客户代码:,客户代码 打印起始仪表读数:,begMeter 打印结束仪表读数:,结束仪表 打印用水加仑数:,%.1f%用水总量
打印金额账单:$,%.2f%totalBill我注意到了几件事:

if begMeter > endMeter:
    waterUsedTotal = (((999999999 - begMeter) + 1) + endMeter) /10
else:
    waterUsedTotal = waterUsed * 0.1
在第一种情况下,waterUsedTotal是一个整数,即向下舍入。在第二种情况下,它被转换为float。这是不一致的

但更重要的是:

if customerCode.lower() == 'r' or 'R':
这一行始终为真,因为“R”被解释为真。而其他案件则是elif,因此他们永远不会被执行

我怀疑你想要的是这样的东西:如果用户输入了“r”或“r”,那么就这样做,否则如果用户输入了“c”或“c”,那么就这样做,否则如果用户输入了“I”或“I”,那么就做最后一件事

我建议:

if customerCode in ['r', 'R']:


.lower表示它无论如何都不会是任何大写字符。

正确打印-这是什么意思?它应该做什么?它能做什么?我建议用一个最终的“else”来结束每个“if..elif”块,以捕获所有其他情况,您可能缺少一个未由任何处理的边缘情况,或者至少缺少一个具有默认值的init“totalBill”请不要删除您发布的代码;没有它,你认为正确的答案毫无意义。非常感谢你的帮助。customerCode.lower部分工作正常,但对于用水的部分,仪表的读数以十分之一加仑为单位,并且在返回到所有0之前,仪表仅显示9个数字。另外,您是否碰巧知道我如何能够使这个程序循环而不弄乱整个代码?
if customerCode.lower() == 'r':