【问题标题】:TypeError: can only concatenate str (not "NoneType") to str on recursive functionTypeError:只能在递归函数上将 str(不是“NoneType”)连接到 str
【发布时间】:2020-08-12 09:38:36
【问题描述】:
def NumberToSymbol(r):
    nuc={0:"A", 1:"C", 2:"G",3:"T"}
    return nuc.get(r)
def NumberToPattern(index, k):
    if k == 1:
        return NumberToSymbol(index)
    prefixIndex=index/ 4
    r = index % 4
    symbol=NumberToSymbol(r)
    PrefixPattern =NumberToPattern(prefixIndex, k-1)
    return  PrefixPattern+ symbol

print(NumberToPattern(45,4))

这是我的输出:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-169-5a1c7e64259c> in <module>
----> 1 print(NumberToPattern(45,4))

<ipython-input-168-331109643d8f> in NumberToPattern(index, k)
      7     if k == 1:
      8         return symbol
----> 9     PrefixPattern =PrefixPattern+NumberToPattern(prefixIndex, k-1)
     10     return  PrefixPattern+ symbol

TypeError: can only concatenate str (not "NoneType") to str

r 是键,indexk 是数字。我想将index(base 10)转换为base k,然后我想改变base k中数字的每个值,就像字典一样,最后我想得到一个字符串。

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    错误表明您将 None ("NoneType") 连接到 str。如果你仔细观察,NumberToSymbol 打算返回一个str,但是当nuc 中不存在密钥(r) 时,它返回None 而不是str,因此会出现错误。

    nuc 中找不到r 的原因是:prefixIndex=index/ 4 可以产生浮点数5/4 == 1.25,但您期望得到1。所以,你需要整数除法。

    要执行整数除法,请将prefixIndex=index/ 4 替换为prefixIndex = index // 4。阅读有关Python integer division 的更多信息。

    【讨论】:

    • 非常感谢!!
    猜你喜欢
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 2020-09-18
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多