Merhaba,
51 tamsayısını 55 'e nasıl yuvarlatabilirim?
yada
56 tamsayısını 60 'a nasıl yuvarlatabilirim?
Aklıma ilk son hanesi 6 ise +4, 7 ise +3, 8 ise +2 ve 9 ise +1 yaptırmak geldi. Aynı şekilde 1 2 3 4 için de farklı 4 tane durum.
Olabilir ama uzun bir yöntem gibi.
10 -> 10
12 -> 15
13 -> 15
16 -> 20
18 -> 20
gibi yuvarlayabilen yerleşik bir işlev olsa …
Merhaba,
Şöyle bir işlev tasarlanabilir.
def yuvarla(n: int):
return n + 5 - n % 5 if n % 5 != 0 else n
assert yuvarla(12) == 15
assert yuvarla(17) == 20
Şu fonksiyon işinizi görür muhtemelen:
def yuvarla(sayı):
while not sayı%5==0:
sayı+=1
return sayı
Benim sorum ise bu fonksiyon tek satırda yazılabilir mi?
Yazılabilir.
def yuvarla(n: int):
return n + 5 - n % 5 if n % 5 != 0 else n
Hatta, şöyle yapayım.
def yuvarla(sayi, referans):
return sayi + referans - sayi % referans if sayi % referans != 0 else sayi
assert yuvarla(51, 3) == 51
assert yuvarla(51, 4) == 52
assert yuvarla(51, 5) == 55
assert yuvarla(51, 6) == 54
from math import ceil
n = int(input())
last_digit = n%10
g = ceil(last_digit / 5) * 5
print(n + g - last_digit)
eğer 5 in katıysa da yuvarlaması gerekmez mi?
15 → 10
Merhaba, soruyu @dildeolupbiten e sormuşsun ama ben de cevap vermek isterim. Başta ben de senin gibi düşündüm ama sorudaki input ları görünce - bir de konu adı python yukarı
yuvarlama olduğu için- dildeolupbitenin haklı olduğu görülebilir.
Mesela burada neden 60’a veya 50’ye yuvarlamak yerine 55 e yuvarlanmış gibi vs. vs.
Gerekir mi gerekmez mi onu bilmiyorum ben sadece yuvarlama 5’e göre yapılıyorsa, 5’in tam böldüğü sayılar yuvarlanmasın diye onu yazdım, eğer 5’in tam böldüğü sayıların da yuvarlanması isteniyorsa o kısım kaldırılabilir.
“Yukari” derken yukaridaki 5’in katina mi?
math.ceil(x / 5) * 5
bi sure idare eder.
Wowww, ben de yukarıda ebele hübelenin ebele hübelesini alıp ubele hebeleden eccele ücceleyi çıkarayım.
Bu çözüme şapka çıkarıyorum
Taktim o zaman ben de
Yalniz bende 99999999999999995
civarinda patliyor. (Malum, float)
Ikınırsak olur gibi.
f = lambda x: (x // 5 + (x % 5 != 0)) * 5
Ama garip, bu işin üstadı adamlar neden böyle bir ceil yazmış ki*(kendilerince bir sebebi vardır mutlaka). -bana ceilin kaynak kodlarını aramak düşer- Bazen ceil çalışmıyor. Ben de daha önce şu problemde problem yaşamıştım. ceil
çalışmıyordu. Bu olaydan sonra genelde kendi ceilimi yazıyorum artık.
Not: *Şimdi anladım sanırım, herkes int lerle çalışmıyor ki. Ben şu ana kadar int bazlı düşünmüşüm.