Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 3.x 为什么if-else块在应该运行的时候运行不超过两次?_Python 3.x_If Statement_Math - Fatal编程技术网

Python 3.x 为什么if-else块在应该运行的时候运行不超过两次?

Python 3.x 为什么if-else块在应该运行的时候运行不超过两次?,python-3.x,if-statement,math,Python 3.x,If Statement,Math,我试图找到给定输入值的乘法数字根MDR和乘法持久性MR。为此,我必须使用三个函数 MDR-查找乘法数字根 MPersistence-找到乘法持久性 prodDigits-查找输入数字的数字乘积。 我使用if-else块递归调用proddights函数。但它只运行了两次。 例如,如果我给输入86,它应该作为86->48->32->6运行(MDR6,mpersistence3) 但我的代码只给出32之前的输出,持久性为1 num = input("Enter the number"

我试图找到给定输入值的乘法数字根MDR和乘法持久性MR。为此,我必须使用三个函数 MDR-查找乘法数字根 MPersistence-找到乘法持久性 prodDigits-查找输入数字的数字乘积。 我使用if-else块递归调用proddights函数。但它只运行了两次。 例如,如果我给输入86,它应该作为86->48->32->6运行(MDR6,mpersistence3) 但我的代码只给出32之前的输出,持久性为1

num = input("Enter the number")

def MDR(num):
    c = 0
    def prodDigits(num):

        individual_ele = map(int, str(num))
        productOfDigits = 1
        for i in individual_ele:
            productOfDigits *= i
        print(productOfDigits)
        return productOfDigits
   
    res = prodDigits(num)
    c += 1

    if res>=10:
        res1 = str(res)
        prodDigits(res1)
    else:
        print(res)
    
    print("Mpersistence is",c)


def Mpersistence():
    MDR(num)

Mpersistence()
输出是

Enter the number86
48
32
Mpersistence = 1

如何修复此问题?

一个
if/else
块不应“多次”运行。
if/else
块只运行一次

您正在寻找的是一个循环,可以通过
while
关键字来实现

比较这两种功能:

def运行一次(num):
如果(数值>9):
num=proddights(num)
返回数
def多次运行(num):
而(num>9):
num=proddights(num)
返回数
x=运行一次(86)
# = 48
y=多次运行(num)
# = 6

请注意,“if”和“while”都是英语单词。用英语阅读这两个函数的代码。如果满足某些条件,则第一个函数调用
proddights
。只要满足某些条件,第二个用户就会继续呼叫
proddights

请复制您的代码,而不是使用屏幕截图,这会使您更难获得帮助(被```包围)。对不起,现在可以了吗?嗨,请您用简洁的话解释一下“乘法数字根”和“乘法持久性”是什么意思吗?@Stef Hi,如果一个数字n的所有数字都与乘积相乘,则最后获得的一个数字号称为eg-86->(8*6)48->(4*8)32->(3*2)6的乘法数字根(MDR)。这里6是MDR,数字需要乘以才能达到一个数字的次数称为n的乘法持久性。在这里,我们需要乘以三倍才能得到一个位数的值,所以MPersistence是3谢谢你的第一句话。我已经忘记了。实际上,我以前也尝试过在代码中使用while循环。它进入了一个无限循环,唯一有效的语句是if-else块。我不知道如何解决它。