Merhabalar bir sayı dizisinde en çok geçen sayıyı bulmak için bir algoritma geliştirdim. Bu kodu nasıl daha iyi yazabilirim? Bu sayede daha fazla bir bilgi edinmiş olabileceğimi düşünüyorum.
Kod:
def Mod(list1):
tekrar = dict()
for i in list1:
en_cok = 1
if i in tekrar:
en_cok = tekrar[i] + 1
tekrar[i] = en_cok
else:
tekrar[i] = en_cok
maximum = max(tekrar.values())
for i in tekrar.items():
if i[1] == maximum:
mod = i[0]
return mod
Şöyle yazabiliriz:
def mod(iterable):
tekrar = {}
for i in iterable:
tekrar.setdefault(i, 0)
tekrar[i] += 1
return max(tekrar, key=tekrar.__getitem__)
Aradığınız fonksiyon standart kütüphanede de var:
>>> import statistics
>>> statistics.mode([1, 2, 3, 2])
2
>>>
4 Beğeni
import statistics
n = int(input("Kaç adet sayı gireceksiniz? “))
sayilar = []
for i in range(n):
sayi = int(input(f”{i+1}. sayıyı giriniz: "))
sayilar.append(sayi)
“”“mod = max(set(sayilar), key = sayilar.count) # mod hesaplaması
print(“Listenin modu:”, mod)”""
print("yazdığınız listenin modu ",statistics.mode(sayilar),“sayısıdır.”)
Fonksiyonsuz, statistic kütüphanesinden yararlanarak, böyle bir şey yazabildim hocam .
Gerçi konuyu hortlatmış oldum ama birilerinin işine yarayabilir diye umuyorum.