Найти - Пользователи
Полная версия: А как добавить инкремент в функции ?
Начало » Python для новичков » А как добавить инкремент в функции ?
1
Saturn
Функция должна переставлять все четные символы с нечетными.
Я вот не дописал,
def test(text):
    res = ''
    count = 0;
    for t in text:             
        res += text[1 + count] + text[0 + count]
        count += 2 
    return res  
 

Как можно сделать чтобы с каждой итерацией
к text прибавлялось +2 ?
Не пойму почему count не хочет прибавляться ?
reclosedev
Ошибка в логике. count каждый раз прибавляется на 2, а количество итераций равно количеству символов. Могу привести два варианта (однострочник и с циклом), но лучше попробуйте сами исправить.

Подсказка: t в коде не используется, для count больше подойдет range. Гляньте 3-й параметр к range в справке.
Saturn
Я уже допер, но напишите свои варианты, интересно увидеть.
def test(text):
    res = ''
    count = 0;
    for t in text:
        try:             
            res += text[1 + count] + text[0 + count]
            count += 2
        except IndexError:
            pass
    return res  
reclosedev
def test1(text):
    return ''.join([x + y for x, y in zip(text[1::2], text[::2])])
 
def test2(text):
    res = []
    for i in range(0, len(text) - 1, 2):
        res.append(text[i + 1] + text[i])
    return ''.join(res)
 
def test3(text):
    return ''.join([text[i + 1] + text[i] 
                    for i in range(0, len(text) - 1, 2)])

except IndexError:
            pass
И цикл будет крутиться в два раза больше чем нужно. Хотя бы break вместо pass нужен.
Saturn
Вот так переделал после совета.
def shuffle_str(text):
    res = ''
    for t in range(0,len(text),2):
        res += text[1 + t] + text[0 + t]
    return res

Интересные варианты. Я про join совершенно не подумал. Спасибо.
fata1ex
http://python.su/forum/topic/9477
odnochlen
Самое быстрое.

from array import array
def swap(txt):
    arr=array('H', txt)
    arr.byteswap()
    return a.tostring()
fata1ex
http://python.su/forum/topic/14684/?page=2#post-87752
reclosedev
odnochlen
Самое быстрое.

from array import array
Да, кстати. Но с Юникодом не справиться (если вообще это кому-то нужно будет ).
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB