Belirli bir aralıktaki sayıların rakamlarının çarpımını bulmak

Merhaba,
1 den 50ye kadar bir aralık verildiğinde sayıların rakamlarının çarpımını verecek bir yol var mı?
Sayıları rakamlarına ayırmaya çalıştığımda sayıları stringe dönüştürüp nasıl parçalayabilirim?
Python’ı yeni öğrenmeye çalışan birisi olarak yabancı kaynaklardan bir yöntem bulamadım.

Bu yöntemle yaparsanız, sonuc 0 olacaktır. Çünkü sayınız 10’a geldiğinde 1 ve 0 olarak ayrılacak. Çarptığınızda sonuc 0 olacak, ve geri gelen bütün sayıların rakamlarının çarpımı bir anlam ifade etmeyecektir.

Yine de sayıları nasıl ayıracağınızı görmek isterseniz, şu şekilde ayırabilirsiniz

for i in range(50):
    rakamlar = list(str(i))
    print(rakamlar)
2 Beğeni

Cevap 0 çıkacaktır 10’u geçtikten sonra

1 Beğeni

@ithilquessirr galiba her sayının rakamları çarpımını ayrı ayrı istiyor.

1 Beğeni

Eğer @hasser ’ in dediği gibiyse

min = 20
max = 50
for i in range(min,max):
	if len(str(i))>1:
		print(int(str(i)[0])*int(str(i)[1]))

Tek hanelileri çarptırmadım.

2 Beğeni

Örnek olarak,
(23,24,25) sayılarının basamaklarının çarpımları (6,8,10) çıktısını veriyor.
Bu şekilde bir sayı aralığındaki (range(1,1000) gibi) rakamların çarpımlarını araştırıyorum.

Örneğin şu şekilde bir listedeki sayıların toplamlarını bulabiliyorum:

l=[9,37,44,96]
q= [sum(int(digit) for digit in str(numb)) for numb in l]
print(q)

Out:

[9,10,8,15]

1 Beğeni

o zaman, şu şekilde yapabilirsiniz

alt = 0
ust = 50
liste = []

for i in range(alt,ust):
    if(len(str(i)) > 1): # tek rakamlı değilse
        rakamlar = list(str(i))
        liste.append(int(rakamlar[0])*int(rakamlar[1]))

daha kısası için

liste = [int(list(str(i))[0])*int(list(str(i))[1]) for i in range(50) if len(str(i))>1]
3 Beğeni

İşte size sum mantığıyla çalışan bir çarpma fonksiyonu:

def carp(liste):
    a=1
    for i in liste:
        a*=i
    return a
2 Beğeni