Co to jest rozwiązanie Pythoniczne dla następujących?Wydajny sposób na zaokrąglanie do arbitralnej precyzji w Pythonie
Czytam czujnik temperatury, który ma rozdzielczość .5. Muszę do niego napisać (ma programowalne wyjście termostatu), również z rozdzielczością .5.
Więc napisałem tę funkcję (Python 2.7), aby zaokrąglić pływaka jako wejście do do najbliższego .5:
def 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)
które działa prawidłowo, wyjścia 6.0, 6.5 i 7.0, odpowiednio. Właśnie tego chcę.
Jestem stosunkowo nowy w Pythonie. Linia
return roundnum + .5 if .25 <= decimals < .75 else roundnum
ma mnie śliniąc się z podziwem dla jej implementorów. Ale czy to jest Pythonic?
Edytuj: od momentu zamieszczenia informacji dowiedziałem się nieco więcej o what is and isn't 'Pythonic'. Mój kod nie jest. Cmd's anwwer, poniżej, jest. Dziękuję Ci!
Wypróbuj - 5.4. –
lub wartości ujemne ogólnie Przypuszczam, że –
Spróbuj 6.51. Wynik to 7,5. Ale masz rację, przykuty porównań to wspaniała cecha. Ternarna składnia wyrażeń, gdy ją "zdobędziesz", jest również bardzo przyjemna. –