2014-03-23 1 views

ответ

31

ломтиков на помощь :)

def left(s, amount): 
    return s[:amount] 

def right(s, amount): 
    return s[-amount:] 

def mid(s, offset, amount): 
    return s[offset:offset+amount] 
+3

Осторожно с помощью этой функции 'right'. ''asdf' [- 0:] == 'asdf'', а не' '' '. – user2357112

+0

@ user2357112 уверен, что вы правы. Код был предоставлен скорее для illustartive цели, чтобы показать, как функции в Python и Basic могут соответствовать –

0

Эти отлично работает для чтения влево/вправо «n» символов из строки, но, по крайней мере, с BBC BASIC, то LEFT$() и RIGHT$() функции позволили изменять влево/вправо "N" символов тоже ...

Например:

10 a$="00000" 
20 RIGHT$(a$,3)="ABC" 
30 PRINT a$ 

бы произвести:

00ABC 

Edit: С пишу это, я придумал свое решение ...

def left(s, amount = 1, substring = ""): 
    if (substring == ""): 
     return s[:amount] 
    else: 
     if (len(substring) > amount): 
      substring = substring[:amount] 
     return substring + s[:-amount] 

def right(s, amount = 1, substring = ""): 
    if (substring == ""): 
     return s[-amount:] 
    else: 
     if (len(substring) > amount): 
      substring = substring[:amount] 
     return s[:-amount] + substring 

К return n символов, которые вы бы назвали

substring = left(string,<n>) 

Если по умолчанию 1, если не указано. То же самое относится и к праву()

Чтобы изменить левый или правый п символов строки вы называете

newstring = left(string,<n>,substring) 

Это бы первые п символов подстроки и перезаписывать первые п символов string, возвращая результат в newstring. То же самое работает для right().

+0

Это действительно комментарий, а не ответ. С немного больше rep, [вы сможете оставлять комментарии] (// stackoverflow.com/privileges/comment). Пожалуйста, используйте ответы только для публикации фактических ответов. – Bowdzone

1

Благодаря Энди W

я обнаружил, что в середине() не совсем работа, как я ожидал, и я модифицирована следующим образом:

def mid(s, offset, amount): 
    return s[offset-1:offset+amount-1] 

я выполнил следующий тест:

print('[1]23', mid('123', 1, 1)) 
print('1[2]3', mid('123', 2, 1)) 
print('12[3]', mid('123', 3, 1)) 
print('[12]3', mid('123', 1, 2)) 
print('1[23]', mid('123', 2, 2)) 

В результате чего:

[1]23 1 
1[2]3 2 
12[3] 3 
[12]3 12 
1[23] 23 

Это было то, чего я ожидал. Исходный код mid() производит следующее:

[1]23 2 
1[2]3 3 
12[3] 
[12]3 23 
1[23] 3 

Но функции left() и right() работают нормально. Спасибо.

0

Вы можете использовать этот метод также будет действовать как этот

thadari=[1,2,3,4,5,6] 

#Front Two(Left) 
print(thadari[:2]) 
[1,2] 

#Last Two(Right) 
print(thadari[:-2]) 
[5,6] 

#mid 
mid = len(thadari) //2 

lefthalf = thadari[:mid] 
[1,2,3] 
righthalf = thadari[mid:] 
[4,5,6] 

Надежда это поможет

 Смежные вопросы

  • Нет связанных вопросов^_^