我尝试过这样的问题:
a = input("Enter number : ")
s = 3
w = 1
while a>0:
digit=a%10
if n%2 == 0:
p = p*digit
else:
s = s+digit
a=a/10
n=n+1
print "The sum is",s
即使没有数字也能正常工作,但对于像234这样的奇数没有数字,它显示总和为6和产品3
答案 0 :(得分:3)
没有显式循环:
import operator
from functools import reduce # in Python 3 reduce is part of functools
a = input("Enter number : ")
lst = [int(digit) for digit in a]
add = sum(lst[1::2])
mul = reduce(operator.mul, lst[::2],1)
print("add =",add,"mul =",mul,"result =",add+mul)
产:
Enter number : 234
add = 3 mul = 8 result = 11
答案 1 :(得分:0)
你必须从n = 0开始才能使其工作
a = int(input("Enter number"))
s = 0
p = 1
n = 0
while a>0:
digit=a%10
if n%2 == 0:
p *= digit
else:
s += digit
a /= 10
n += 1
print "The sum is",s
print "Product is",p
答案 2 :(得分:0)
def foo(num):
lst = [int(digit) for digit in str(num)]
mul, add = 1, 0
for idx, val in enumerate(lst):
if not idx % 2:
mul *= val
else:
add += val
return add, mul
使用它:
>>> foo(1234)
(6, 3)
>>> foo(234)
(3, 8)
此函数将采用整数或整数的字符串表示形式,并将其拆分为int
的列表。然后,它将使用enumerate
迭代列表并执行所需的操作。它返回一个2元素元组。
答案 3 :(得分:0)
很容易弄错编号。任何字符串,列表或数组的第一项始终是索引0.例如,如果要使用for迭代列表的项目,请注意以后从len(list)返回的值中取走1循环例如
for x in range(len(list)-1):
#your code using list[x]
答案 4 :(得分:0)
这是数学版本:
n = input('Enter a number: ')
digits = []
while n > 0:
digits.append(n%10)
n //= 10
s = 0
p = 1
i = 0
for digit in reversed(digits):
if i%2 == 0:
s += digit
else:
p *= digit
i += 1
print 'Sum of even digits:', s
print 'Product of odd digits:', p
print 'Answer:', s+p
我试图让你尽可能简单。
这是一个做同样事情的函数:
def foo(n):
s = 0
p = 1
for i, digit in enumerate(str(n)):
if i%2 == 0:
s += digit
else:
p *= digit
return s+p