Python ile İbre oluşturma

Gelelim sizin “İbre” konunuza:

def gauge(size, percentage):
   gauge_list=['-']*size
   pointer = round (percentage*size/100)
   gauge_list[pointer]='*'
   gauge_list = ['|','|']+gauge_list+['|','|']
   print(''.join(str(item) for item in gauge_list))


gauge(20,50)

Bu kadar.

Fonksiyonun 1. Parametresi yüzdelik kısım kaç karakterde gösterilecek, bunu 20 seçtik. (Başta ve sondaki çift pipe ‘||’ karakterleri bu sayıya dahil değil.

İkinci parametre, %Kaç’ı işaretlemek istiyorsanız o değer. Mesela %50 için 50.

round ile de küsüratlı sayı çıkarsa, en yakın değere yuvarlasın diye. round ile ilgili eksra bir durum yok yanlış yuvarladı zevzekliği dinleyemem, beğenmeyen başka bir yuvarlatma fonksiyonu kullanabilir.

Sonuçta:

image

20+4 pipe karakeriyle beraber bir “ibre”.

Bu kadar basit.

Ama asıl sorman gereken konu bu değil.

Windows terminalinde cursorü doğru yere taşıyıp hep aynı yerde bu “ibre” yi nasıl göstereceğim?

Hadi bakalım sor cevap versinler.

EDIT 1:

İnsan düşününce belirli bir aralıkta yüzde almayı da bilmeme ihtimaliniz de geldi aklıma.

Çünkü soru kodlama sorusundan çok basit matematikle ilgili bir problem.

Bu nedenle belirli bir aralıkta % alan fonksiyon da ekleyim.

def ilk_degeri_ve_son_degeri_olan_aralıkta_yuzde_almayı_bilmiyorum(boyut,ilk_deger, son_deger, mevcut_deger):
   fark = son_deger-ilk_deger
   percentage =  (mevcut_deger*100)/fark 
   
   gauge(boyut,percentage)


def gauge(size, percentage):
   gauge_list=['-']*size
   pointer = round (percentage*size/100)
   gauge_list[pointer-1]='*'
   gauge_list = ['|','|']+gauge_list+['|','|']
   print(''.join(str(item) for item in gauge_list))



ilk_degeri_ve_son_degeri_olan_aralıkta_yuzde_almayı_bilmiyorum(20, 50, 100, 25)

Hala altın soru duruyor. Bu göstergeyi bir konuma nasıl taşırız?