Python, удаляющий буквы из строки - PullRequest
0 голосов
/ 20 ноября 2011

Это домашнее задание. Мне просто нужно подтолкнуть.

Я пытаюсь создать цикл, в котором буквы строки будут удаляться, когда она выходит за пределы определенного числа.

Пример:

Enter Your String: David
Enter Your Amount: 4
Returns: Davi

Что я сделал до сих пор:

word = raw_input("Enter your string:")
amount = raw_input("Enter your amount:")
word_length = len(word)

if word_length > amount:
  for i in range(word_length):
    if s[i] > amount:

И это примерно столько, сколько я получил. Я не очень уверен относительно того, какой синтаксис я использую, чтобы удалить буквы, которые находятся в позициях, больше чем word_length.

Ответы [ 6 ]

5 голосов
/ 20 ноября 2011

Сама строка в Python неизменна - ее нельзя изменить, а буквы нельзя удалить. Но вы можете создавать новые строковые объекты на основе вашей строки. Один из способов сделать это - нарезка .

Прочтите связанный раздел официального руководства по Python, пока не найдете то, что вам нужно. :)

Редактировать : Если вам нужно использовать цикл, как предлагается в вашем комментарии, возможен и другой метод:

  1. Создать пустой список.

  2. Зацикливание на индексах range(amount) и добавление буквы, соответствующей текущему индексу, в ваш список.

  3. Присоедините список к строке снова, используя "".join(my_list).

Цель списка iterim состоит в том, что список может быть изменен, в то время как строка - как сказано выше - неизменна.

3 голосов
/ 20 ноября 2011

Вам нужно сделать это в цикле?В противном случае попробуйте нарезку строк:

word = raw_input("Enter your string: ")
amount = int(raw_input("Enter your amount: "))

s = word[0:amount]
2 голосов
/ 20 ноября 2011

Никаких циклов не требуется!

word = raw_input("Enter your string:")
amount = int(raw_input("Enter your amount:"))

word = word[:amount]
print word

Первым шагом является считывание ваших значений и приведение суммы к целому числу.А так как строки являются списками символов в глубине души, вы можете получить из них подсписки.В Python нотация [x:y] получает подсписок из списка на интервале [x, y).Если вы не предоставите x ([:y]), интервал становится равным [0, y);если вы не предоставите y ([x:]): [x, len (theStr));и если вы не предоставите ([:]), вы получите оригинальную строку!

Бонусные факты:

Оператор [x:y] является расширениемоператора индекса массива, [x].В большинстве языков вызов list[x] даст вам элемент в точке x.Однако в Python он может вести себя скорее как обход.Например, list[-1] даст вам последний элемент в списке.

Также существует оператор [x:y:z], где z - интервал шага, который будет использоваться во время обхода.Полезные случаи для этого оператора включают получение элементов с четными индексами (list[::2]) и обращение списка (list[::-1]).

0 голосов
/ 20 ноября 2011

Я полагаю, у вас есть два подхода

  1. Создайте новую строку, добавляя символы один за другим из старого, пока не достигнете своего предела
  2. Перезаписывайте старую строку, используя часть ее самого[: -1] пока не достигнете своего лимита
0 голосов
/ 20 ноября 2011

Удаление символов из строки в Python затруднительно. Лучшим способом решения данной проблемы будет либо срезы, как предлагали другие, либо, если вам нужно использовать цикл, собирая нужные вам символы в новую строку вместо удаления их из старой, то есть

s = raw_input()
n = int(raw_input())
new_s = ""
for i in range(n):
    new_s = new_s + s[i]
0 голосов
/ 20 ноября 2011

Вы можете воспользоваться помощью нарезки

word = raw_input("Enter your string:")
amount = raw_input("Enter your amount:")
word=word[:int(amount)]   #slicing the rest of unwanted characters
print word
...