0

这是一个家庭作业。我只需要轻推一下。

我正在尝试创建一个循环,其中当字符串的字母超过某个数字时将被删除。

例子:

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.

4

6 回答 6

5

Python 中的字符串本身是不可变的——它不能更改,字母也不能删除。但是您可以根据您的字符串创建新的字符串对象。这样做的一种方法是切片

通读官方 Python 教程的链接部分,直到找到所需内容。:)

编辑:如果您需要使用循环,如您的评论中所建议的,另一种技术也是可能的:

  1. 创建一个空列表。

  2. 循环遍历索引range(amount)并将与当前索引对应的字母添加到列表中。

  3. 使用 再次将列表加入字符串"".join(my_list)

iterim 列表的目的是可以更改列表,而字符串(如前所述)是不可变的。

于 2011-11-19T22:01:35.483 回答
3

您需要循环执行吗?否则,尝试字符串切片:

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

s = word[0:amount]
于 2011-11-19T22:03:55.553 回答
2

无需循环!

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])。

于 2011-11-19T22:04:16.917 回答
0

你可以借助切片

word = raw_input("Enter your string:")
amount = raw_input("Enter your amount:")
word=word[:int(amount)]   #slicing the rest of unwanted characters
print word
于 2011-11-19T22:06:06.223 回答
0

在 Python 中从字符串中删除字符很困难。解决给定问题的更好方法是使用切片,正如其他人所建议的那样,或者如果您必须使用循环,则通过在新字符串中收集您需要的字符而不是从旧字符串中删除它们,即

s = raw_input()
n = int(raw_input())
new_s = ""
for i in range(n):
    new_s = new_s + s[i]
于 2011-11-19T22:07:32.023 回答
0

我想你有两种方法

  1. 创建一个新字符串,从旧字符串中逐个添加字符,直到达到限制
  2. 使用自身的切片覆盖旧字符串 [:-1] 直到达到极限
于 2011-11-19T22:09:37.827 回答