【问题标题】:Python - Extracting a substring using a for loop instead of Split method or any other means [duplicate]Python - 使用for循环而不是Split方法或任何其他方式提取子字符串[重复]
【发布时间】:2013-09-07 02:35:38
【问题描述】:

我正在使用online Python course,它提出了一个问题,即程序员要使用 for 循环提取子字符串。一年前有人问过similar question,但并没有真正得到答复。

所以问题是这样的:

编写一个程序,接受形式为 «number1»+«number2» 的单个输入行,其中这两个都表示正整数,并输出两个数字的总和。例如,在输入 5+12 上,输出应为 17。

给出的第一个提示是

使用for循环查找字符串中的+,然后提取+前后的子字符串。

这是我的尝试,我知道这是错误的,因为循环中没有位置等于“+”。如何找到“+”在字符串“5+12”中的位置?

S = input()
s_len = len(S)
for position in range (0,s_len):
   if position == '+':
      print(position[0,s_len])

**SPOILER ALERT - 编辑以向任何 CSC 滑铁卢课程学员显示答案

S = input()
s_len = len(S)
for position in range (0,s_len):
   if S[position] == '+':
      number1 = int(S[0:position])
      number2 = int(S[position:s_len])
sum = number1 + number2
print(sum)

【问题讨论】:

  • Martijn,Ashwini 最终为原始重复问题提供了更好的答案。所以这不值得转发吗?我说是的!

标签: python string for-loop substring extract


【解决方案1】:

如果您想使用循环执行此操作,请使用enumerate

S = input()
for position, character in enumerate(S):
   if character == '+':
      print(position)
      break  # break out of the loop once the character is found

enumerate 从可迭代/迭代器中返回索引和项目。

>>> list(enumerate("foobar"))
[(0, 'f'), (1, 'o'), (2, 'o'), (3, 'b'), (4, 'a'), (5, 'r')]

您的解决方案的工作版本:

S = input()
s_len = len(S)
for position in range(0, s_len):
   if S[position] == '+':        #use indexing to fetch items from the string.
      print(position)

【讨论】:

  • 谢谢阿什维尼!我没有想到将位置作为索引分配给字符串!
  • @StacyM 很高兴有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-21
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多