функциональность функции ord () - PullRequest
0 голосов
/ 01 мая 2020

Кто-нибудь может объяснить, что делает функция ord в этом коде? Код предназначен для умножения чисел, записанных в виде строк (без использования int ()).

def multiply(num1, num2):
    """
    :type num1: str
    :type num2: str
    :rtype: str
    """

    res1, res2 = 0, 0 
    for d in num1:
        print(d)
        print(ord(d))
        print(ord('0'))
        res1 = res1 * 10 + (ord(d) - ord('0'))
    for d in num2:
        res2 = res2 * 10 + (ord(d) - ord('0'))
    return str(res1 * res2)

Как ord (d) - ord ('0') в конечном итоге возвращает правильный результат. Я не понимаю, что именно делает ord.

Всегда ли ord ('0') 48 (что я получаю, когда печатаю)?

Ответы [ 2 ]

1 голос
/ 01 мая 2020

ord - это функция, которая принимает символ и возвращает число, с которым Юникод связывает этот символ. То, как Unicode структурирует цифры 0-9 ord("9")-ord("0"), приведет к 9. ord из 0 - это 48, и отсюда начинаются цифры: «1» - это 49, «2» - это 50 и c. Этот код удаляет смещение цифр в юникоде, так что вы получите число, в котором находится ди git. Таким образом, ord("2") - ord("0") оценивается как 50 - 48, что составляет 2.

. Инверсия ord равна chr, которая возвращает символ с заданным числом. chr(48) is "0" Вы можете поиграться с этими функциями, а также посмотреть Ascii Table (который содержится в юникоде), чтобы узнать больше о том, как символы представлены в компьютерах.

0 голосов
/ 01 мая 2020

возвращает целое число, представляющее код Unicode точку символа

...