Aşağıdakilere bir Pythonic çözümü nedir?Python'da rasgele kesinliğe yuvarlanmanın verimli yolu
.5 çözünürlüğü olan bir sıcaklık sensörü okuyorum. Yazmaya (.programlanabilir termostat çıkışı var), ayrıca .5 çözünürlükte yazmam gerek.
yüzden en yakın bir.5 için giriş olarak bir şamandıra yuvarlamak için bu fonksiyonu (Python 2.7) yazdı: iyi çalışırdef point5res(number):
decimals = number - int(number)
roundnum = round(number, 0)
return roundnum + .5 if .25 <= decimals < .75 else roundnum
print point5res (6.123)
print point5res(6.25)
print point5res(6.8)
sırasıyla 6.0, 6.5 ve 7.0, çıkarır. Bu benim istediğim şey.
Python'a nispeten yeniyim.
numaralı hatlar, uygulayıcılar için hayranlık duymamı sağladı. Ama bu Pythonic mi?
Düzeltme: yayınlamadan bu yana, what is and isn't 'Pythonic' hakkında biraz daha fazla şey öğrendim. Benim kodum değil. Cmd aşağıda, aşağıdadır. Teşekkür ederim!
için deneyin - 5.4. –
veya negatif değerler genel olarak –
Sanırım 6.51'i deneyin. Sonuç 7.5. Ama haklısınız, zincirleme karşılaştırmalar harika bir özellik. Ve üçlü ifade sözdizimi, bir kez "olsun", çok güzel. –