Как напечатать серию номеров Unicode в python? - PullRequest
1 голос
/ 03 апреля 2020

Я просто пытаюсь напечатать номер Unicode в диапазоне от 1 до 100 в python. Я много искал в StackOverflow, но ни один вопрос не отвечает на мои запросы.

Итак, я хочу напечатать бенгальские числа от ১ до ১০০. Соответствующее число Engli sh составляет от 1 до 100.

Я попытался получить Unicode-номер ১, который равен «\ u09E7». Затем я попытался увеличить это число на 1, как показано в следующем коде:

x = '\u09E7'
print(x+1)

Но приведенный выше код говорит мне следующий вывод.

TypeError: can only concatenate str (not "int") to str

Итак, я хочу получить ряд чисел следующим образом:

১, ২, ৩, ৪, ৫, ৬, ৭, ৮, ৯, ১০, ১১, ১১, ১২, ১৩, ............, ১০০

TypeError: может объединять только str (не "int") в str1 I sh, если есть какое-либо решение для этого , Спасибо.

Ответы [ 2 ]

2 голосов
/ 03 апреля 2020

Составьте таблицу перевода. Функция str.maketrans() принимает строку символов и строку замен и создает словарь перевода ординалов Unicode в ординалы Unicode. Затем преобразуйте переменную счетчика в строку и используйте функцию translate() в результате для преобразования строки:

#coding:utf8
xlat = str.maketrans('0123456789','০১২৩৪৫৬৭৮৯')
for i in range(1,101):
    print(f'{i:3d} {str(i).translate(xlat)}',end=' ')

Вывод:

1 ১ 2 ২ 3 ৩ 4 ৪ 5 ৬ 6 ৬ 7 ৭ 8 ৮ 9 ৯ 10 ১০ 11 ১১ 12 ১২ 13 ১৩ 14 ১৪ 15 ১৫ 16 ১৬ 17 ১৭ 18 ১৮ 19 ১৯ 20 ২০ 21 ২১ 22 ২২ 23 ২৩ 24 ২৪ 25 ২৫ 26 ২৬ 27 ২৭ 28 ২৮ 29 ২৯ 30 ৩০ 31 ৩১ 32 ৩২ 33 ৩৩ 34 ৩৪ 35 ৩৫ 36 ৩৬ 37 ৩৭ 38 ৩৮ 39 ৩৯ 40 ৪০ 41 ৪১ 42 ৪২ 43 ৪৩ 44 ৪৪ 45 ৪৫ 46 ৪৬ 47 ৪৭ 48 ৪৮ 49 ৪৯ 50 ৫০ 51 ৫১ 52 ৫২ 53 ৫৩ 54 ৫৪ 55 ৫৫ 56 ৫৬ 57 ৫৭ 58 ৫৮ 59 ৫৯ 60 ৬০ 61 ৬১ 62 ৬২ 63 ৬৩ 64 ৬৪ 65 ৬৫ 66 ৬৬ 67 ৬৭ 68 ৬৮ 69 ৬৯ 70 ৭০ 71 ৭১ 72 ৭২ 73 ৭৩ 74 ৭৪ 75 ৭৫ 76 ৭৬ 77 ৭৭ 78 ৭৮ 79 ৭৯ 80 ৮০ 81 ৮১ 82 ৮২ 83 ৮৩ 84 ৮৪ 85 ৮৫ 86 ৮৬ 87 ৮৭ 88 ৮৮ 89 ৮৯ 90 ৯০ 91 ৯১ 92 ৯২ 93 ৯৩ 94 ৯৪ 95 ৯৫ 96 ৯৬ 97 ৯৭ 98 ৯৮ 99 ৯৯ 100 ১০০

1 голос
/ 03 апреля 2020

Вы можете попробовать это. Преобразовать character в integer. Сделайте сложение и снова конвертируйте его в character. Если число больше 10, вам нужно преобразовать обе цифры в символы, поэтому мы используем модуль %.

if num < 10:
   x = ord('\u09E6')
   print(chr(x+num))
elif num < 100:
   mod = num % 10
   num = int((num -mod) / 10)
   x = ord('\u09E6')
   print(''.join([chr(x+num), chr(x+mod)]))
else:
   x = ord('\u09E6')
   print(''.join([chr(x+1), '\u09E6', '\u09E6']))

. Вы можете попробовать запустить его здесь https://repl.it/repls/GloomyBewitchedMultitasking

РЕДАКТИРОВАТЬ: Предоставляя также javascript код, как указано в комментариях.

function getAsciiNum(num){
    zero = "০".charCodeAt(0)
    if (num < 10){
        return(String.fromCharCode(zero+num))
    }
    else if (num < 100) {
      mod = num % 10
      num = Math.floor((num -mod) / 10)
      return(String.fromCharCode(zero+num) + String.fromCharCode(zero+mod))
    }
    else {
      return(String.fromCharCode(zero+1) + "০০")
    }
}

console.log(getAsciiNum(88))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...