所以,我已经尝试过这个问题,因为本周它似乎只有一百次了。 它填补了以下程序的空白......
你进入了杰克逊和维尔。 当这些结合起来时,就会成为杰克逊维尔。 每隔一封信就给我们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,所以没有太复杂或者我可以匹配的二十个选项。拜托,谢谢你的帮助!
答案 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)
letter
,以便每次循环时都是counter
combined
位置的字母
letter
的位置是否包含counter
的下一个值修改letter
(就像第一个counter
的{{1}}的初始值一样)。