πŸ”’ Как Π»Π΅Π³ΠΊΠΎ пСрСвСсти римскиС Ρ†ΠΈΡ„Ρ€Ρ‹ Π² арабскиС Π² Python?

Для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° римских Ρ†ΠΈΡ„Ρ€ Π² арабскиС числа Π² Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:


def roman_to_arabic(roman):
    roman_map = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
    arabic = 0
    prev_value = 0
    
    for i in range(len(roman)-1, -1, -1):
        if roman_map[roman[i]] >= prev_value:
            arabic += roman_map[roman[i]]
        else:
            arabic -= roman_map[roman[i]]
            
        prev_value = roman_map[roman[i]]
        
    return arabic

roman_numeral = 'XXV'
arabic_numeral = roman_to_arabic(roman_numeral)
print(arabic_numeral)
	

Π’ этом ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ создаСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ roman_to_arabic, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ римскоС число Π² качСствС Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ арабскоС число.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ roman_map, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит соотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ римскими Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ ΠΈ ΠΈΡ… числовыми значСниями.

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ итСрируСмся ΠΏΠΎ римскому числу с ΠΊΠΎΠ½Ρ†Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» for, обновляя арабскоС число Π² соотвСтствии с ΠΈΡ… числовыми значСниями. Если Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, ΠΌΡ‹ прибавляСм Π΅Π³ΠΎ ΠΊ арабскому числу. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΌΡ‹ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅ΠΌ Π΅Π³ΠΎ.

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ roman_to_arabic с римским числом 'XXV' ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ арабскоС число.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как пСрСвСсти римскиС Ρ†ΠΈΡ„Ρ€Ρ‹ Π² арабскиС Π² Python

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ римских Ρ†ΠΈΡ„Ρ€ Π² арабскиС – это процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π½Π°ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ числа, записанныС Π² римской систСмС счислСния, Π² Ρ†ΠΈΡ„Ρ€Ρ‹, прСдставлСнныС Π² арабской систСмС.

Π’ Python сущСствуСт нСсколько способов ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄. Один ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивных – использованиС словаря для отобраТСния римских символов Π² ΠΈΡ… арабскиС эквивалСнты. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


        def roman_to_arabic(roman_numeral):
            roman_to_arabic_dict = {
                'I': 1,
                'V': 5,
                'X': 10,
                'L': 50,
                'C': 100,
                'D': 500,
                'M': 1000
            }
            
            arabic_numeral = 0
            previous_value = 0
            
            for symbol in reversed(roman_numeral):
                if roman_to_arabic_dict[symbol] >= previous_value:
                    arabic_numeral += roman_to_arabic_dict[symbol]
                else:
                    arabic_numeral -= roman_to_arabic_dict[symbol]
                
                previous_value = roman_to_arabic_dict[symbol]
            
            return arabic_numeral
        
        # ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования
        roman_numeral = "XIV"
        arabic_numeral = roman_to_arabic(roman_numeral)
        print(arabic_numeral)  # Π’Ρ‹Π²ΠΎΠ΄: 14
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ roman_to_arabic, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ римскоС число Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создали ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, roman_to_arabic_dict, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит соотвСтствия римских символов ΠΈ ΠΈΡ… арабских эквивалСнтов.

Для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° римского числа Π² арабскоС ΠΌΡ‹ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ символам Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ символа большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ значСния, ΠΌΡ‹ добавляСм Π΅Π³ΠΎ ΠΊ ΠΎΠ±Ρ‰Π΅ΠΉ суммС. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΌΡ‹ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΈΠ· ΠΎΠ±Ρ‰Π΅ΠΉ суммы. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ символа обновляСтся послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Π’ ΠΊΠΎΠ½Ρ†Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ арабскоС число.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ roman_to_arabic ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ римскоС число "XIV" Π² арабскоС число 14.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ римскиС числа Π² арабскиС Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π½Π° Python.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

[Python] АрабскиС числа Π² римскиС. РСшаСм логичСскиС Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Python вслух #2

5.1 РимскиС Ρ†ΠΈΡ„Ρ€Ρ‹. "ПоколСниС Python": курс для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. ΠšΡƒΡ€Ρ Stepik

Π—Π°Π΄Π°Ρ‡Π° Π½Π° Leetcode. ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ римских чисСл Π² арабскиС Π½Π° JavaScript

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”— Как ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Π² Python? Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ простой способ привязки клавиш для Π²Π°ΡˆΠΈΡ… Python-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

Как ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python?

Как Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π³Ρ€Π°Ρ„Ρ‹ Π² ΠΏΠΈΡ‚ΠΎΠ½: Π»Π΅Π³ΠΊΠΎΠ΅ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… πŸ“Š

πŸ”’ Как Π»Π΅Π³ΠΊΠΎ пСрСвСсти римскиС Ρ†ΠΈΡ„Ρ€Ρ‹ Π² арабскиС Π² Python?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ синтаксис языка Python? Руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΈ основныС понятия

πŸ” Как ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив Π² Python ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ: Π»Π΅Π³ΠΊΠΈΠΉ Π³Π°ΠΉΠ΄ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ” Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°ΡΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ скобки Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅? 🐍 Π£Ρ‡Π΅Π±Π½ΠΈΠΊ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов