Python 如何对负整数输入执行digitsum,直到获得一个位数?
我的代码:Python 如何对负整数输入执行digitsum,直到获得一个位数?,python,python-3.x,Python,Python 3.x,我的代码: def add_digits(): num=int(input("Enter ")) return (num - 1) % 9 + 1 if num > 0 else 0 print(add_digits()) 如何使这项工作适用于负输入?请帮忙。提前感谢您的时间和帮助。为什么不使用num的绝对值呢 def add_digits(num): if num == 0: return 0 elif num > 0:
def add_digits():
num=int(input("Enter "))
return (num - 1) % 9 + 1 if num > 0 else 0
print(add_digits())
如何使这项工作适用于负输入?请帮忙。提前感谢您的时间和帮助。为什么不使用
num
的绝对值呢
def add_digits(num):
if num == 0:
return 0
elif num > 0:
return (num - 1) % 9 + 1
else:
return -( (abs(num) - 1) % 9 + 1 )
num = int(input("Enter "))
print(add_digits(num))
首先,您应该让
add_digits
函数将值作为参数,而不是从用户那里获取;这将使在其上构建更容易:
def add_digits(num: int) -> int:
return (num - 1) % 9 + 1 if num > 0 else 0
print(add_digits(int(input("Enter "))))
现在有一个更简单的问题要解决:我们如何确保当这个函数传递一个负数时,它返回相应正数结果的负数?这很容易在开始时表示为一个简单的递归调用:
def add_digits(num: int) -> int:
if num < 0:
return -add_digits(-num)
return (num - 1) % 9 + 1 if num > 0 else 0
assert add_digits(123456) == 3 # ok
assert add_digits(-123456) == -3 # ok