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)
Cevap 0 çıkacaktır 10’u geçtikten sonra
@ithilquessirr galiba her sayının rakamları çarpımını ayrı ayrı istiyor.
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.
Ö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]
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]
İşte size sum
mantığıyla çalışan bir çarpma fonksiyonu:
def carp(liste):
a=1
for i in liste:
a*=i
return a