Ответ 1
фрагменты для спасения:)
def left(s, amount):
return s[:amount]
def right(s, amount):
return s[-amount:]
def mid(s, offset, amount):
return s[offset:offset+amount]
Я хочу сделать что-то вроде этого:
>>> mystring = "foo"
>>> print(mid(mystring))
Help!
фрагменты для спасения:)
def left(s, amount):
return s[:amount]
def right(s, amount):
return s[-amount:]
def mid(s, offset, amount):
return s[offset:offset+amount]
Если я помню, что QBasic, справа, слева и в середине делал что-то вроде этого:
>>> s = '123456789'
>>> s[-2:]
'89'
>>> s[:2]
'12'
>>> s[4:6]
'56'
http://www.angelfire.com/scifi/nightcode/prglang/qbasic/function/strings/left_right.html
Спасибо Andy W
Я обнаружил, что mid() работал не так, как я ожидал, и я изменил его следующим образом:
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() работают нормально. Спасибо.
Вы можете использовать этот метод, и он будет действовать так
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]
Надеюсь, это поможет
Они отлично работают для чтения символов "влево" / "справа" справа от строки, но, по крайней мере, с помощью BBC BASIC, функции LEFT$()
и RIGHT$()
также позволяли вам изменять символы слева и справа "n"...
например:.
10 a$="00000"
20 RIGHT$(a$,3)="ABC"
30 PRINT a$
Произведет:
00ABC
Изменить: начиная с написания этого, я придумал свое собственное решение...
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
Чтобы вернуть n символов, которые вы вызывали
substring = left(string,<n>)
Если по умолчанию установлено значение 1, если не указано. То же самое верно для right()
Чтобы изменить левый или правый n символов строки, которую вы вызывали
newstring = left(string,<n>,substring)
Это займет первые n символов подстроки и перезапишет первые n символов строки, возвращая результат в newstring. То же самое работает для right().
Это решение Энди. Я только что обратился к проблеме User2357112 и дал ей значимые имена переменных. Я новичок в Python и предпочел эти функции.
def left(aString, howMany):
if howMany <1:
return ''
else:
return aString[:howMany]
def right(aString, howMany):
if howMany <1:
return ''
else:
return aString[-howMany:]
def mid(aString, startChar, howMany):
if howMany < 1:
return ''
else:
return aString[startChar:startChar+howMany]
В Python есть встроенные функции для "вправо" и "влево", если вы ищете логический результат.
str = "this_is_a_test"
left = str.startswith("this")
print(left)
> True
right = str.endswith("test")
print(right)
> True