• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python Covert rzymskie liczby

Cloud VPS
+1 głos
946 wizyt
pytanie zadane 6 kwietnia 2020 w Python przez Steady Obywatel (1,200 p.)
zmienione kategorie 6 kwietnia 2020 przez Steady
class py_solution:
    def int_to_Roman(self, num):
        val = [
            1000, 900, 500, 400,
            100, 90, 50, 40,
            10, 9, 5, 4,
            1
            ]
        syb = [
            "M", "CM", "D", "CD",
            "C", "XC", "L", "XL",
            "X", "IX", "V", "IV",
            "I"
            ]
        roman_num = ''
        i = 0
        while  num > 0:
            for _ in range(num // val[i]):
                roman_num += syb[i]
                num -= val[i]
            i += 1
        return roman_num


print(py_solution().int_to_Roman(1))

 

Hej, 

z racji wolnego czasu zacząłem temat Klas w Python.

Niestety z jednym zadaniem mam problem logiczny. 

Chodzi o kod podany wyżej. Mianowicie może mi ktoś wytłumaczyć jak on działa?

Dla takiej osoby jak ja powyższy kod po pierwszym sprawdzaniu wygląda mniej więcej tak: (Podstawiam za num jedynke)

roman_num = '' <-- tu będzie M bo syb[0] to M
i = 0
while  1 > 0:
    for _ in range(1 // 1000):
        roman_num += M
        1 -= 1000 (czyli tutaj wyjdzie -999 i pętla się zakończy bo num ma byc wiekszy od 0)
    i += 1

 

Pewnie to śmieszne ale nie wiem jak tutaj ma wyjść I, a nie M.

Ktoś, coś może pomóc i ze spokojem wytłumaczyć?

1 odpowiedź

+1 głos
odpowiedź 6 kwietnia 2020 przez adrian17 Mentor (354,120 p.)
for _ in range(1 // 1000):

1 // 1000 to jest 0, więc pętla się ani razu nie wykona,

(a tak na boku, to ten kod raczej nijak nie korzysta z tego, że jest w klasie ;) )

komentarz 6 kwietnia 2020 przez Steady Obywatel (1,200 p.)
To w jaki sposób cały program jest w stanie przekonwertować 1 na rzymską I?

Mógłbyś wytłumaczyć? Z góry dzięki :D
2
komentarz 6 kwietnia 2020 przez adrian17 Mentor (354,120 p.)
No... po kolei patrzy ile jest 1000, 900, 500 etc w liczbie "1" (jest ich 0), aż w końcu znajduje że jest jedna jedynka w 1, pętla for się wykonuje raz i dodaje "I" do roman_num.
komentarz 6 kwietnia 2020 przez Steady Obywatel (1,200 p.)
Dzięki wielkie

Podobne pytania

0 głosów
2 odpowiedzi 1,198 wizyt
pytanie zadane 6 listopada 2022 w Python przez s1m1nv1k Początkujący (270 p.)
+1 głos
3 odpowiedzi 879 wizyt
pytanie zadane 17 lutego 2023 w Python przez blaccli Nowicjusz (180 p.)
0 głosów
0 odpowiedzi 752 wizyt
pytanie zadane 14 marca 2022 w Python przez Raven2221 Nowicjusz (200 p.)

93,467 zapytań

142,460 odpowiedzi

322,734 komentarzy

62,847 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...