向前和向后遍历字符串,提取交替字符

时间:2021-01-07 07:21:30

标签: python string for-loop

我正在学习 Python,但有一个我似乎无法破解的实验室。我们有一条线,例如shacnidw,必须转换为 sandwich。我不知何故需要用 for 循环进行迭代并首先选择具有奇数索引的字母,然后是向后偶数索引。比如选择一个索引为 1,3,5,7,8,6,4,2 的字母。

使用列表或切片看起来很明显,但我们还不允许使用这些函数。我想问题是我该怎么做?

3 个答案:

答案 0 :(得分:3)

我希望我能正确理解您的问题。检查下面的代码。

s = 'shacnidw'
s_odd = ""
s_even = ""
for i in range(len(s)):
  if i%2 == 0:
    s_even += s[i]
for i in range(len(s), 0, -1):
  if i%2 == 1:
    s_odd += s[i]

print(s_even + s_odd)

我希望它会有所帮助。

答案 1 :(得分:2)

编程就是将复杂的问题分解为更简单的问题。尝试将其分解为更小的步骤。

  1. 首先,您能否在 for 循环中生成数字 1、3、5、7?
  2. 接下来,您能否在第二个循环中生成 8、6、4、2?

解决这两个步骤应该会让你走上正轨。

答案 2 :(得分:2)

您的文本看起来采用特定模式,可以使用以下语法实现。

<块引用>

1, 3, 5, 7 : for n in range(1, size, 2) : 向前步长 2

8, 6, 4, 2 : for m in range(size, 0, -2) : 反向步长 2

通过使用上述索引构建字符串,我们可以轻松得出预期结果。

string = 'shacnidw'
result = ''
size = len(string) - 1

for n in range(0, size, 2):
    result += string[n]

for m in range(size, 0, -2):
    result += string[m]

print(result)

结果

sandwich
相关问题