Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何对负整数输入执行digitsum,直到获得一个位数?_Python_Python 3.x - Fatal编程技术网

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