【发布时间】:2015-02-17 17:50:25
【问题描述】:
我正在尝试编写一个快速脚本来输出序列。 序列开始如下: 1,11,21,1211,111221,312211... 从 1 开始,然后作为 1 1 第二项是 11,因为两个 1 第三项是 21 等。
我在下面编写了一个脚本,它按此顺序输出术语。 当 input_string 为 1 时,它会输出正确的下一项,即 11。但是之后的所有项也输出为 11……如果我手动将输入设置为 11,那么所有项都计算正确。
这毫无意义,因为"1" 的初始输入我的total_sequence[0] 变量将是"1",给出"11" 的正确输出。
下一个术语将具有total_sequence[1] 作为其输入,即"11",即最后一次迭代输出。
但这会将"11" 作为其输出。
如果我直接将"11" 作为total_sequence[1] 项而不是引用total_sequence[1](which = "11"),那么就会给出正确的输出。
那么基本上为什么input_string = "11" 与output[1] 不同,而output = ["1","11"]?
input_string= "1"
N=5
total_sequence = [input_string]
for i in xrange(0,N,1):
N_counter = int(0)
previous_char = ""
output_string = ""
character_index = int(1)
#loop through each character in the current sequence term
for current_char in total_sequence[i]:
#if first character
if character_index == 1:
N_counter = 1
#if last character
if character_index == len(input_string):
if current_char == previous_char:
N_counter = N_counter + 1
if current_char != previous_char:
if previous_char!="":
output_string = output_string + str( N_counter ) + str( previous_char )
N_counter = int( 1 )
output_string = output_string + str( N_counter ) + str( current_char )
#if neither first nor last character
if character_index != 1 and character_index != len(input_string) :
if current_char == previous_char:
N_counter = N_counter + 1
if current_char != previous_char:
output_string = output_string + str( N_counter ) + str( previous_char )
N_counter = int( 1 )
character_index = character_index + 1
previous_char = current_char
total_sequence.append( output_string)
print total_sequence
【问题讨论】:
-
这似乎是来自 Python Challenge 的问题。
-
嗯,很可能。在您发表评论之前,我从未听说过 python 挑战。我从一本朋友的谜题书中获得了这个序列,其中的谜题是估计这个序列的第 n 项中的字符数。
-
这是一个经典的拼图系列,您可以在 Python Challenge 中找到它,也可以在大量有关拼图的书籍中找到它。