首页 > 解决方案 > 如何在python变量中传递空值或任何其他方式

问题描述

我正在尝试将 excel 公式转换为 python 脚本,但有一次我很挣扎。excel中有一个单元格没有任何值,但单元格是空的,因为这个单元格实际上不需要输入任何值,有时也需要,所以基于空单元格它会产生不同的值,如果我输入该单元格中的任何值都会产生不同的值。所以我在python中尝试同样的事情来传递空值并获得所需的输出。这是我尝试过但对我不起作用的变量:-

varpbmt = Decimal(input('Enter pbmt')).quantize(Decimal('.01'), rounding = ROUND_HALF_EVEN)

我得到的错误如下所示 -

Enter FlagE-406A | T1

Enter unique idE-406A | T1

Enter mt1.41

Enter pbmt <------     **[here I'm pressing enter from keyboard expecting it passing empty]**

Traceback (most recent call last):

  File "C:\E-RBI\Testing Pyrhon\5_1_loss.py", line 65, in <module>
    print(fiftyeoneloss())

  File "C:\E-RBI\Testing Pyrhon\5_1_loss.py", line 16, in fiftyeoneloss
    PrevBaselineMeasuredThickness = Decimal(input('Enter pbmt')).quantize(Decimal('.01'), rounding = ROUND_HALF_EVEN)

InvalidOperation: [<class 'decimal.ConversionSyntax'>]

标签: pythonpython-3.xnumpy

解决方案


如果用户不输入任何内容, varpbmt 究竟应该是什么?

varpbmt = Decimal(input('Enter pbmt') or 0.0).quantize(Decimal('.01'), rounding = ROUND_HALF_EVEN)

否则,如果用户没有输入任何内容,您可以使用“或”来定义默认值。

如果您想捕获一个空字符串并执行不同的操作:

ipt = input('Enter pbmt')
if ipt:
    varpbmt = Decimal(ipt).quantize(Decimal('.01'), rounding = ROUND_HALF_EVEN)
else:  # Case someone just hits ENTER
    DO SOMETHING COMPLETLY DIFFERENT HERE

推荐阅读