每隔一封信

时间:2014-10-30 01:46:53

标签: python-2.7

所以,我已经尝试过这个问题,因为本周它似乎只有一百次了。 它填补了以下程序的空白......

你进入了杰克逊和维尔。 当这些结合起来时,就会成为杰克逊维尔。 每隔一封信就给我们jcsnil。

我填的空白很好,但剩下的空白,我无法弄明白。他们在这里。

x = raw_input("Enter a word: ")
y = raw_input("Enter another word: ")
print("You entered %s and %s." % (x,y))
combined = x + y
print("When these are combined, it makes %s." % combined)
every_other = ""
counter = 0
for __________________ :
    if ___________________ :
        every_other = every_other + letter
    ____________
print("Taking every other letter gives us %s." % every_other)

我只需要三个空白来完成这个程序。这是基本的python,所以没有太复杂或者我可以匹配的二十个选项。拜托,谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

解决方案是使用步长值进行切片。

In [10]: "jacksonville"[::2] Out[10]: 'jcsnil'

切片表示法意味着“从可迭代的开头开始,在迭代的末尾开始,选择每个第二个元素”。请记住,Python切片首先选择切片中可用的第一个元素。

编辑:没有意识到必须填写空白

for letter in combined:
  if(counter % 2) == 0:
    every_other = every_other + letter
  counter += 1

由于相互取走意味着你每隔一个字母,或者每一秒都通过循环,并且你使用计数器跟踪你已经完成了多少次传递,你可以使用模数除法(%)来检查何时采取一封信。基本情况是0%2 = 0,这使您可以取第一个字母。重要的是要记住总是递增计数器。

在没有手动计数器的情况下执行此操作的方法(在评论中已经提到)是使用enumerate上的combined函数。当给定一个iterable作为参数时,enumerate返回一个生成器,它生成每个请求的两个值,iterable中的位置以及该位置的iterable值。

我正在使用这种语言,将iterables称为可索引序列,但它可以是任何类似于生成器的对象,它不必具有有限的预定义序列。

答案 1 :(得分:0)

  1. 第一个空白需要定义letter,以便每次循环时都是counter
  2. combined位置的字母
  3. 第二个空白需要测试当前letter的位置是否包含
  4. 最后一个空白需要为counter的下一个值修改letter(就像第一个counter的{​​{1}}的初始值一样)。