@ru_python

Страница 2932 из 9768
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
kino
08.06.2017
19:19:47
список букв и смотреть позицию элемента
сгенировать лист из диапозона utf и смотреть по индексу?

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

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
Можно и забить. Я просто хотел вообще авто)
for i in range(256,10000): if 'а'<=chr(i)<='я' or 'А'<=chr(i)<='Я': print(i,'-', chr(i))

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
letter - 'а' и все. Ну ... если юникод, то я не знаю
То юзать библиотеку юникода и очень внимательно следить за границами массивов. И страдать.

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

ну как вам? только глобал лист неочень мне нравиться

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
ну так atb.index(x) + 1
согласен сейчас последую совету

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

Rocket
08.06.2017
20:36:22
list? в kwargs? а? зачем?
Он там persistent будет.

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

kino
08.06.2017
20:36:35
Google
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
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
Вот это я имел в виду: 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

Igor
08.06.2017
20:46:37
* делает аргументы обязательными через keyword

__atb = [] просто дефолтное значение (что лучше вообще не делать)

Rocket
08.06.2017
20:47:51
*,__atb=[]) а это что за магия
А магия тут в том, что __atb будет для всех вызовов функции одним, т.к. листы в питоне mutable объекты.

__atb = [] просто дефолтное значение (что лучше вообще не делать)
Вот тут как раз именно так и надо. Это кеш.

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

kino
08.06.2017
20:48:54
круто, спасибо я про это не знал век живи век rtfm))

если вас это не затруднит Дайте пожалуйста ссылку на документацию про эту магию

Google
Rocket
08.06.2017
20:50:26
круто, спасибо я про это не знал век живи век rtfm))
Да ты что, это ж основа основ. Списки и словари в питоне mutable и всегда передаются по ссылке. Если надо по значению, то их надо явно копировать.

если вас это не затруднит Дайте пожалуйста ссылку на документацию про эту магию
С телефона я, не дам, но она где то в самом начале хендбука.

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
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

Страница 2932 из 9768