如何在Python中编写程序以接受用户编号并打印其中所有数字的产品?

-4 python python-3.x

d = int(input("Please Enter any Number: "))
a = 0

def product_of_digits(Number):
        d= str(Number)
        for integer in d:
            s = 0
            k = []
            while s < (len(d)):
             print (int(d[s])*int(d[s+1])*int(d[s+2])*int(d[s+3])*int(d[s+4]))
            s += 1

print (product_of_digits(a))  
Run Code Online (Sandbox Code Playgroud)

pok*_*oke 8

您的代码中存在多个问题.让我们按执行顺序开始:

  • print(product_of_digits(a))- 假设product_of_digits应该返回您传入的数字的数字的乘积,那么这将始终返回,0因为您传递a(这是零)而不是用户输入的数字(d).
  • for integer in d- for循环迭代某些东西的元素,而不是索引.在这种情况下,这将迭代字符串中的字符d.这意味着在每次迭代integer中将是一个数字.
  • s = 0 - 在每次循环迭代中,将其重置为零.
  • 类似地s += 1,在for循环结束时不会产生任何影响,因为在下一次迭代开始时,s将再次为零.你可能意味着这一行在while循环中(虽然它有错误的缩进级别).
  • while s < (len(d)) - 所以在循环中你迭代数字的数字,你想再次迭代数字?为什么
  • int(d[s]) * int(d[s+1]) … - 静态地乘以五位数就会失败处理每个数字的目的 - 而不仅仅是那些有5位数字的数字.
  • d[s+4]-为了这一目标的工作,s需要比低len(d)-5,但你迭代,直到slen(d) - 1.
  • print() - 您应该让您的功能返回产品而不是打印它.

可能的解决方案可能如下所示:

def product_of_digits (number):
    product = 1
    for digit in str(number):
        product = product * int(digit)
    return product

print(product_of_digits(d))
Run Code Online (Sandbox Code Playgroud)

  • @AmitGold:这就是为什么我说*另一个*好的解决方案.我不建议更换这个. (2认同)