Python:评估为 'false' 的空字符串

标签 python radix

我可能处于一种独特的情况下,将空字符串评估为 true 会节省几行代码。 (我理解空字符串评估为 false。如下所示)

''  and print ("empty string is true")
'0' and print ("non-empty string is true")

> non-empty string is true

原因如下:

这工作正常。但是请检查输出。

 def baseN(num,b):
    return (num == 0) and "0" or 
           (baseN(num // b, b) + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b])

> baseN(32,16)
> 020

更改最后的结果(在递归结束时)以打印出空字符串,给我错误。

 def baseN(num,b):
    return (num == 0) and "" or 
           ( baseN(num // b, b) + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b])

> baseN(32,16)
> File "<stdin>", line 2, in baseN
> RuntimeError: maximum recursion depth exceeded in comparison

这显然行不通,因为 (num==0) 和 ""(false) 的计算结果总是 False -> 导致未终止的递归调用。

有没有办法只使用逻辑运算/表达式(不使用 if/else 语句)来修复它?

以下将起作用。但它不会只使用逻辑运算符。

def baseN(num,b):
    if (num==0):
       return ""
    else:
        return (baseN(num // b, b) 
               + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b])

baseN(32,16)

最佳答案

Python 有一个三元运算符:

def baseN(num,b):
    return baseN(num // b, b) + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b] if num else "" 

关于Python:评估为 'false' 的空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40238537/

相关文章:

python - 使用 split-apply-combine 通过自定义函数删除一些值并合并剩下的值

themes - yii 框架中的主题化

c++ - 从二进制补码转换为十进制

python - Kivy RecycleView、RecycleGridLayout、滚动标签问题

python - 做tostring()时丢失原始文本

java - 这段代码的含义是什么?与多态性相关

Django 项目基础模板

c++ - 使用 *this 与使用 & 运算符的基对象和派生对象的地址差异

python - 如何在Python中以编程方式调用函数并以编程方式指定模块?

python - 在mysql中获取自动递增的行ID的时间复杂度