Mam listę liczb całkowitych - czy istnieje biblioteka do konwersji ich na zwykły ranking tekstu? IE: 1,2,3 -> "pierwszy, drugi, trzeci"?Czy istnieje biblioteka do konwersji liczby całkowitej na pierwszą/drugą/trzecią
Odpowiedz
Jak wysoko planujesz iść? (Czy kiedykolwiek spodziewać wyższej niż, powiedzmy, „XX”?)
Może po prostu potrzebują dict
,
nth = {
1: "first",
2: "second",
3: "third",
4: "fourth"
# etc
}
Po "dwudziestej" staje się łatwiejsze :) –
W zależności od sytuacji, to może się przydać, aby zachować całkowitą i dołączyć " st "," nd "," rd "i" th ". Jeśli tak, oto prosty algorytm:
UWAGA: Ten algorytm jest napisany w Javie. Nie znam Pythona. Każdy, kto chce go ponownie napisać w Pythonie, będzie moim gościem.
public static String appendInt(int number) {
String value = String.valueOf(number);
if(value.length() > 1) {
// Check for special case: 11 - 13 are all "th".
// So if the second to last digit is 1, it is "th".
char secondToLastDigit = value.charAt(value.length()-2);
if(secondToLastDigit == '1')
return "th";
}
char lastDigit = value.charAt(value.length()-1);
switch(lastDigit) {
case '1':
return "st";
case '2':
return "nd";
case '3':
return "rd";
default:
return "th";
}
}
Więc
System.out.println(1 + appendInt(1));
System.out.println(2 + appendInt(2));
System.out.println(3 + appendInt(3));
System.out.println(4 + appendInt(4));
System.out.println(5 + appendInt(5));
System.out.println(11 + appendInt(11));
System.out.println(21 + appendInt(21));
wyświetlacze
1st
2nd
3rd
4th
5th
11th
21st
To świetny sposób, aby o tym porozmawiać. – answerSeeker
nie może wypowiedzieć się na temat postu ryvantage ponieważ punktów ale napisałem ten sam kod dla Pythona:
def appendInt(num):
if num > 9:
secondToLastDigit = str(num)[-2]
if secondToLastDigit == '1':
return 'th'
lastDigit = num % 10
if (lastDigit == 1):
return 'st'
elif (lastDigit == 2):
return 'nd'
elif (lastDigit == 3):
return 'rd'
else:
return 'th'
def appendInt2(num):
value = str(num)
if len(value) > 1:
secondToLastDigit = value[-2]
if secondToLastDigit == '1':
return 'th'
lastDigit = value[-1]
if (lastDigit == '1'):
return 'st'
elif (lastDigit == '2'):
return 'nd'
elif (lastDigit == '3'):
return 'rd'
else:
return 'th'
drugi to bardziej bezpośredni trans rządzenia, ale okazało się, że pierwszy wariant jest znacznie szybsze:
Pią 28 sierpnia 2015 11:48:13 Wynika
300000005 function calls in 151.561 seconds
Ordered by: call count, name/file/line
ncalls tottime percall cumtime percall filename:lineno(function)
100000000 6.674 0.000 6.674 0.000 {len}
100000000 43.064 0.000 43.064 0.000 test.py:7(appendInt)
100000000 66.664 0.000 73.339 0.000 test.py:22(appendInt2)
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
1 0.000 0.000 151.561 151.561 <string>:1(<module>)
1 0.000 0.000 151.561 151.561 test.py:51(main)
1 16.737 16.737 59.801 59.801 test.py:39(test1)
1 18.421 18.421 91.759 91.759 test.py:45(test2)
array [-2] jest drugą do ostatniej wartości tablicy w Pythonie? * fajne * – ryvantage
Podobnie do żyły @Hugh Bothwellwas following, nie tylko przy użyciu dict
(od swojej klawisze są już ładne i numeryczne), i już ułożyła następujące „jeden liner”:
ordinal=lambda x:["first","second","third","fourth","fifth","sixth","seventh","eighth","ninth","tenth","eleventh","twelfth"][x-1]
który obejmuje wszystkie przypadki, aż do 12. jeżeli y Potrzebujesz wyższego (do setek, itd.), wtedy prawdopodobnie będziesz potrzebował czegoś bardziej wytrzymałego (z rekurencją, którą sobie wyobrażam, itd.).
Ładny i prosty przepisać:
def num_to_ith(num):
"""1 becomes 1st, 2 becomes 2nd, etc."""
value = str(num)
before_last_digit = value[-2]
last_digit = value[-1]
if len(value) > 1 and before_last_digit == '1': return value +'th'
if last_digit == '1': return value + 'st'
if last_digit == '2': return value + 'nd'
if last_digit == '3': return value + 'rd'
return value + 'th'
Pakiet python inflect
ma metodę konwersji cyfr do liczb porządkowych:
import inflect
p = inflect.engine()
for i in range(1,25,5):
print(p.ordinal(i))
Wyświetlanie:
1st
6th
11th
16th
21st
Haha, niesamowite! To ** JEST ** poprawna odpowiedź na pytanie. – Atcold
Wow, to czego szukałem !! – answerSeeker
'p.number_to_words (p.ordinal (i))' wyświetli go jako 'pierwszy',' drugi', 'trzeci', itd. –
Mój kod to wykorzystuje listę, całkowity moduł, aby znaleźć pierwszą cyfrę i całkowitą podziałkę podłogi, aby sprawdzić dla off ru le 11 thru 13.
def stringify(number):
suffix = ["th","st","nd","rd","th","th","th","th","th","th"]
return str(number) + suffix[number % 10] if str(number // 10)[-1] != 1 else str(number) + "th"
Ostatni wiersz bardziej czytelny:
if str(number // 10)[-1] != '1':
return str(number) + suffix[number % 10]
else:
return str(number) + "th"
Zasadniczo mam sprawdzanie drugą cyfrę na 1 *, która wskazuje możliwą 11th, 12th, 13th wyłącznik reguły.W przypadku kontrolerów reguł do tej listy odwołuje się pozostała część podziału przez 10 (operator modulus).
Nie przeprowadzałem żadnych testów wydajności kodu, a sprawdzanie pod względem długości jest znacznie bardziej czytelne, ale to działa.
* (STR (ilość) [- 2]. Generuje IndexError jeśli sygnał wejściowy jest za pomocą jednej cyfry podłodze podział na całkowite zawsze prowadzi się co najmniej 1 cyfrę tak łańcuch będzie zawsze -1 Index)
- 1. Ada95: Konwersja liczby całkowitej do postaci
- 2. Zaokrąglanie liczby całkowitej do najbliższej wielokrotności innej liczby całkowitej
- 3. Runda do najbliższej liczby całkowitej
- 4. Czy mogę użyć preprocessora C do konwersji liczby całkowitej na ciąg znaków?
- 5. Biblioteka do konwersji svg na obrazy?
- 6. Dzielenie liczby całkowitej na jej oddzielne cyfry
- 7. podwójna konwersja do liczby całkowitej w java
- 8. Biblioteka ActionScript do konwersji Markdown do HTML
- 9. Weirdness calling str() do konwersji liczby całkowitej na ciąg w Pythonie 3?
- 10. ORACLE konwersji liczby na ciąg
- 11. Konwersja wykładniczej do liczby całkowitej w PHP
- 12. C++ Sprawdzanie liczby całkowitej.
- 13. Wykrywanie przepełnienia liczby całkowitej
- 14. javascript - jak zaokrąglić do najbliższej liczby całkowitej
- 15. Binarny ciąg do liczby całkowitej z "atoi()"
- 16. Jak zaokrąglić do liczby całkowitej w R?
- 17. Wykrywanie przepełnienia liczby całkowitej
- 18. JavaScript - konwersja liczby całkowitej na tablicę bitów
- 19. Czy istnieje jakaś biblioteka do konwersji wikitext do formatu html przy użyciu php?
- 20. Czy ta funkcja do wykrywania przekroczenia liczby całkowitej rzeczywiście działa?
- 21. Jak uniknąć przepełnienia liczby całkowitej?
- 22. Konwersja daty do liczby całkowitej w Javie
- 23. Czy można bezpiecznie reinterpretować wartość liczby całkowitej na wartość float?
- 24. Kontrola przekroczenia liczby całkowitej SSE2
- 25. C# - Wiązanie pola tekstowego do liczby całkowitej
- 26. BitSet do iz liczby całkowitej/długi
- 27. Biblioteka konwersji jednostek metrycznych Java?
- 28. konwersja liczby całkowitej na listę w pythonie
- 29. Konwersja liczby całkowitej na adres IP
- 30. Ustawienie wartość logiczną na podstawie liczby całkowitej
http://www.daniweb.com/software-development/python/code/216839/number-to-word-converter-python –
Rozpocząłem naukę. Pierwszym zadaniem było napisanie tego dokładnie w Jawa. Jeśli masz doświadczenie w programowaniu, nie powinno to zająć więcej niż 30 minut. –
30 minut? naprawdę lol .. masz na myśli 1 minutę .... http://jsfiddle.net/cmvLS/ (javascript) – ncubica