He intentado este problema así:
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
Funciona perfectamente para números pares, pero para números impares como 234 muestra la suma como 6 y el producto 3
5 respuestas
No explícita bucle:
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)
Productora:
Enter number : 234
add = 3 mul = 8 result = 11
Error fácil de cometer sobre la numeración. El primer elemento de cualquier cadena, lista o matriz siempre es el índice 0. Por ejemplo, tenga cuidado en el futuro para quitar 1 del valor devuelto por len (list) si está iterando a través de los elementos de una lista con un bucle for, p.
for x in range(len(list)-1):
#your code using list[x]
Tienes que comenzar con n = 0 para que esto funcione
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
Aquí está la versión matemática:
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
He tratado de hacer esto lo más simple posible para ti.
Aquí hay una función que hace lo mismo:
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
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
Y usándolo:
>>> foo(1234)
(6, 3)
>>> foo(234)
(3, 8)
Esta función tomará un entero o una representación de cadena de un entero y lo dividirá en una lista de int
s. Luego usará enumerate
para iterar sobre la lista y realizar las operaciones requeridas. Devuelve una tupla de 2 elementos.
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.