【问题标题】:How can my return statement not omit number 0 in this situation in python在这种情况下,我的 return 语句如何在 python 中不省略数字 0
【发布时间】:2022-01-16 18:11:40
【问题描述】:

我已经制作了这个函数,旨在在不使用循环的情况下一个接一个地打印数字的每个数字(不包括理解)。因此我做得很好 到目前为止,我唯一缺少的是我的 return 语句完全省略了数字 0 (例如print_digits(2019)= 2 1 9)

def print_digits(x):
    ver = [u for u in str(x)] 
    if x < 10:
        print(x)
    else:
        print(ver[0])
        ver.pop(0)
        a_string = "".join(ver)
        inter = int(a_string)
        return print_digits(inter)

【问题讨论】:

  • 不要为此使用递归。使用else: print(ver, sep="\n") 将每个字符打印在自己的行上——整个函数本质上是:def print_digits(num): print(*str(num),sep="\n")
  • @PatrickArtner 谢谢你的建议

标签: python function return zero


【解决方案1】:

之后

ver.pop(0)

a_string = '019',所以

inter = int(a_string)

计算为19

你仍然可以通过添加打印 0

if a_string[0] == '0':
    print(0)

之间

a_string = "".join(ver)

inter = int(a_string)

【讨论】:

  • 非常感谢
  • @timoleontsilikis 如果它解决了您的问题,如果您接受这个答案,我将不胜感激。
【解决方案2】:

修改版

def print_digits(x):
    ver = [u for u in str(x)]

    # change 'x' to 'int' before comparison
    if int(x) < 10: 
        print(x)
    else:
        ver.pop(0)
        a_string = "".join(ver)
       
        # comment this line. Now the function argument can be string.
        # inter = int(a_string)
        
        # give 'a_string' (instead of 'inter') to the function
        return print_digits(a_string)
print_digits(2019)

【讨论】:

  • 感谢@PatrickArtner 的“合并请求”:p
【解决方案3】:

发生这种情况是因为当数字“09”转换为整数时,它会变为 9,并且当检查条件 x

def print_digits(x):
  ver = [u for u in str(x)]
  if int(x) < 10 and x[0]!="0":
  
      print(x)
  else:
      print(ver[0])
      ver.pop(0)

  a_string = "".join(ver)
  return print_digits(a_string)

【讨论】:

    【解决方案4】:

    您可以使用以下方法完全避免递归:

    def print_digits(x):
        print("\n".join(list(str(x))))
    

    【讨论】:

    • @PatrickArtner Patrick,这个想法是拆分数字的 str 表示并根据某些分隔符重新加入 - 在本例中为 \n。它的意义是什么......我认为这是OP的问题
    猜你喜欢
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    相关资源
    最近更新 更多