
Stanislav
08.06.2017
18:54:21
И правда же

kino
08.06.2017
19:14:45
говорю сразу мне не нужен готовый код я просто не знаю с чего начать. задача: строка русских букв надо получить порядковый номер каждый буквы св алфавите

Aragaer
08.06.2017
19:16:44
взять ее код и вычесть из него код буквы а

Artem
08.06.2017
19:17:08
https://docs.python.org/3/library/functions.html#ord

Google

Alexandru
08.06.2017
19:18:29

kino
08.06.2017
19:19:47

b0g3r
08.06.2017
19:19:58
Все проще

Alexandru
08.06.2017
19:20:11

Artem
08.06.2017
19:20:18
люблю такое

b0g3r
08.06.2017
19:20:24
А, русских)

Alexandru
08.06.2017
19:20:40
что мешает напихать в список каких хочешь элементов?
просто расставить их в нужно порядке и все
а потом сравнивать каждый символ со списком

Aragaer
08.06.2017
19:22:07
my_alph = {l:i for i, l in enumerate("абвгдеёжзиклмнопрстуфхцчшщъыьэюя")}

kino
08.06.2017
19:23:19

b0g3r
08.06.2017
19:23:50
alpha = "абвгдеёжзиклмнопрстуфхцчшщъыьэюя"
s = "абвап"
[alpha.index(l)+1 for l in s]

Google

Aragaer
08.06.2017
19:25:18
да, индекс это вариант. Но мой вариант позволяет в тот же дикт еще и заглавные добавить
а с индексом придется два раза

b0g3r
08.06.2017
19:25:52
alpha = "абвгдеёжзиклмнопрстуфхцчшщъыьэюя"
s = "абвап"
[alpha.index(l)+1 for l in s.lower()]
:)

Rookie
08.06.2017
19:25:58
А как бы ещё алфавит руками не забивать. Я на этом задрочился.

b0g3r
08.06.2017
19:26:19
через сhr и ord

Aragaer
08.06.2017
19:27:05
а чо б и не забить
ну можно начать с 'a' и через chr и ord в цикле сгенерить, но блин

kino
08.06.2017
19:27:36
рокки алф это просто ,но там нет баквы ё

Rookie
08.06.2017
19:27:40
Можно и забить. Я просто хотел вообще авто)

b0g3r
08.06.2017
19:28:15
>>> for i in range(ord('а'), ord('а')+32):
... print(chr(i))
...
только без ё

kino
08.06.2017
19:28:39

Rocket
08.06.2017
19:29:43
Тут конкурс на самый извращенный вариант? ?

b0g3r
08.06.2017
19:30:01
да)

Rocket
08.06.2017
19:30:13
Кстати, а заглавные буквы чо никто не учитывает?

b0g3r
08.06.2017
19:30:49
.lower()
че их учитывать

Rocket
08.06.2017
19:31:12

b0g3r
08.06.2017
19:31:20
а мож и не должен

Google

kino
08.06.2017
19:31:42
недолжен

Rocket
08.06.2017
19:31:57
И, кстати, lower дорого будет, если input большого размера.

b0g3r
08.06.2017
19:32:15
Так это, надо на си писать
aragaer, я вызываю тебя

Rocket
08.06.2017
19:32:34
Лучше в индексный массив загнать по две буквы сразу

Aragaer
08.06.2017
19:52:54
а на Си ваще делать нечего же
letter - 'а' и все. Ну ... если юникод, то я не знаю

Rocket
08.06.2017
20:02:46

kino
08.06.2017
20:29:48
atb=[]
def altoseq(name):
if len(atb)<=33:
atb.clear()
atb.append(0x00)
for i in range(ord('а'), ord('а')+32):
atb.append(chr(i))
atb.insert(6,"ё")
name=name.lower()
z=[atb.index(x) for x in name]
return z
ну как вам? только глобал лист неочень мне нравиться

Rocket
08.06.2017
20:33:12

b0g3r
08.06.2017
20:33:54
atb.append(0x00) это ещё что за дичь)

Igor
08.06.2017
20:33:56
list? в kwargs? а? зачем?

kino
08.06.2017
20:34:24

b0g3r
08.06.2017
20:34:32
ну так atb.index(x) + 1

kino
08.06.2017
20:35:29

b0g3r
08.06.2017
20:35:48
if len(atb) - это чтобы каждый раз не наполнять atb?

Rocket
08.06.2017
20:36:22

Igor
08.06.2017
20:36:27
почему бы не заполнить его сразу один раз, пусть константой будет, не?

kino
08.06.2017
20:36:35

Google

kino
08.06.2017
20:36:45

Igor
08.06.2017
20:36:51
> atb.insert(6,"ё")
посмотрел на список, сначала "ё" идет, а потом "е", это ок?

b0g3r
08.06.2017
20:36:58
я за константу)

Igor
08.06.2017
20:37:27
я за константу)
+1. зачем его каждый раз пересоздавать. к тому же глобальный
а еще в случае с юникодом/питоном 3 это можно решить так:
altoseq = lambda name: [ord(c) - 1070 for c in name]
(не надо делать лямбдой, это я выебнулся просто)
а, нет, нельзя, там как раз с буквой ё проблема будет

kino
08.06.2017
20:40:26
ааа у вас нулевой байт

Admin
ERROR: S client not available

Igor
08.06.2017
20:41:35
atb=[]
def altoseq(name):
if len(atb)<=33:
atb.clear()
atb.append(0x00)
for i in range(ord('а'), ord('а')+32):
atb.append(chr(i))
atb.insert(6,"ё")
name=name.lower()
z=[atb.index(x) for x in name]
return z
хмм.. вставил ровно такой код,
In [5]: altoseq('игорь')
Out[5]: [10, 4, 16, 18, 30]
In [6]: atb[5:8]
Out[6]: ['д', 'ё', 'е']
у меня 3.6.1 и макось, если что. может из-за этого %)

Rocket
08.06.2017
20:45:32

kino
08.06.2017
20:46:21

Igor
08.06.2017
20:46:37
* делает аргументы обязательными через keyword
__atb = [] просто дефолтное значение (что лучше вообще не делать)

Rocket
08.06.2017
20:47:51
Тоесть, фактически это глобальная переменная, но доступная только в теле функции.

kino
08.06.2017
20:48:54
круто, спасибо я про это не знал век живи век rtfm))
если вас это не затруднит Дайте пожалуйста ссылку на документацию про эту магию

Google

Rocket
08.06.2017
20:50:26

kino
08.06.2017
20:51:51

Rocket
08.06.2017
20:52:22

Igor
08.06.2017
20:53:10
Вот это я имел в виду:
def altoseq(name, *,__atb=[]):
if len(__atb)<=33:
__atb.clear()
__atb.append(0x00)
for i in range(ord('а'), ord('а')+32):
__atb.append(chr(i))
__atb.insert(6,"ё")
name=name.lower()
z=[__atb.index(x) for x in name]
return z
а kwargs-то здесь причем.
да, он создастся один раз при объявлении функции, и это обычно приносит больше проблем, чем пользы. здесь это, конечно, приносит пользу, но зачем, когда можно просто сделать гребаную глобальную константу? :)

Rocket
08.06.2017
20:53:12
Кстати, это касается не только списков и словарей, но вообще всех объектов кроме примитивов и строк.

Igor
08.06.2017
20:53:28

Rocket
08.06.2017
20:53:40

Igor
08.06.2017
20:53:42
https://stackoverflow.com/questions/6967632/unpacking-extended-unpacking-and-nested-extended-unpacking
вот клевые примеры

Rocket
08.06.2017
20:55:20
Ооооо, не знал.
Завтра попробую, ваще круть.
Хех, круто, теперь s.split() обретает новую магию ?

Dmitry
08.06.2017
20:59:07
Вы646.1H/sСтатус:В сетиАктивные майнеры:3

Vishal
08.06.2017
21:12:57
Why do I see rectangles instead of text?

Bohdan
08.06.2017
21:13:37
in this chat?

Vishal
08.06.2017
21:13:42
Yes

Sergey
08.06.2017
21:15:04
Yes
cuz these are letter in Russian. your client OS may lack of required font.

Bohdan
08.06.2017
21:15:05
because your font doesn't support Cyrillic symbols
this is russian Python group :)

Vishal
08.06.2017
21:16:06
Okay.. Thanks ??

Vanya
08.06.2017
21:31:58
http://get.nimses.com/Il9L/KgnEnMjVOD