TypeError:不支持+的操作数类型:“int”和“NoneType”

2024-09-30 18:30:06 发布

您现在位置:Python中文网/ 问答频道 /正文

如果1到x是用文字写出的,则此未完成的代码将返回字母总数:

#!/usr/bin/python
def Base1(n):
  if (n==1):
      return len('one') 
  if (n==2):
    return len('two') 
  if (n==3):
      return len('three')
  if (n==4):
      return len('four') 
  if (n==5):
      return len('five') 
  if (n==6):
      return len('six') 
  if (n==7):
      return len('seven') 
  if (n==8):
      return len('eight')
  if (n==9):
      return len('nine')
def Base10(g):
  if (g == 10):
    return len('ten')
  if (g == 11):
    return len('eleven')
  if (g == 12):
    return len('twelve')
  if (g == 13):
    return len('thirteen')
  if (g == 14):
    return len('fourteen')
  if (g == 15):
    return len('fifteen')
  if (g == 16):
    return len('sixteen')
  if (g == 17):
    return len('seventeen')
  if (g == 18):
    return len('eightteen')
  if (g == 19):
    return len('nineteen')
  if (g == 20):
    return len('twenty')
  if (g > 20):
    return BiggerThan20(g)
def BiggerThan20(t):
  if t<30:
    return len('twenty')+Base1(t-20)
  if t<40:
    return len('twenty')+Base1(t-20)


def trial(runcounter):
  summitup = 0
  if (len(str(runcounter))==1):
    summitup += Base1(runcounter)
  if (len(str(runcounter))==2):
    summitup += Base10(runcounter)
  return summitup

lettersum = 0

start = int(input("Please enter an integer: "))
for k in range(1, start+1, 1):
  lettersum += trial(k)
 #print (k, lettersum)
print(lettersum)

它可以运行到29,但是如果我输入任何东西>;=30,bash将返回以下输出:

^{pr2}$

我不熟悉编程,不知道为什么会出现这种错误。在

当BiggerThan20中的第一个if语句变成false时,Base1似乎突然返回None。在

我很感激你能提供的任何帮助。在

解决了! 我忘了关心十个。。。 谢谢你的帮助


Tags: lenreturnifdefstartprinttrialstr
2条回答

falsetru是正确的。在

也许你想要这样:

if t<40:
return len('twenty')+Base1(t-20)

未来:

^{pr2}$

Base1不为数字10或更大的数字返回任何内容。在

>>> Base1(1)
3
>>> Base1(10) # None
>>> Base1(20) # None

>>> len('twenty') + Base1(10)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'

Base10BiggerThan20也有同样的问题。在

  • Base10对于小于10的数字不返回。在
  • BiggerThan20对于number>;=40,不返回。在

相关问题 更多 >