Python 3.x 为什么if-else块在应该运行的时候运行不超过两次?
我试图找到给定输入值的乘法数字根MDR和乘法持久性MR。为此,我必须使用三个函数 MDR-查找乘法数字根 MPersistence-找到乘法持久性 prodDigits-查找输入数字的数字乘积。 我使用if-else块递归调用proddights函数。但它只运行了两次。 例如,如果我给输入86,它应该作为86->48->32->6运行(MDR6,mpersistence3) 但我的代码只给出32之前的输出,持久性为1Python 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"
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块。我不知道如何解决它。