我对python不太熟练。我在练习编码中有这个代码。由于这是一个高尔夫代码问题,我想尝试python,因为我对它有一些了解。 这是我的程序
Hack sequence of IndiaHacks-2014 if given as below
Hi = 2014*Hi-1 + 69*Hi-2 for (i>2)
Hi = 1 for (i<=2)
Given n, you need to find nth term of Hack sequence
我使用了以下代码
T = input()
for i in range(T):
N = int(input())
if N <= 2:
print 1
else :
a = [1,1]
j=2
while j < N :
a.append((2014 * a[j-1]) + (69 * a[j-2]))
j++
print a[N-1]
但我收到以下错误
SyntaxError:
invalid syntax
11, 7, \t\t\tj++\n
任何人都可以告诉我这段代码有什么问题,为什么我会收到这个错误?
答案 0 :(得分:2)
使用j += 1
代替j++
。 python中没有++
运算符。
在这种情况下,或者只是不使用手动递增的循环变量:
T = input()
# I'm not sure about this part of your code:
# (indentation and the expected value of T)
for i in range(T):
N = int(input())
# To solve this problem you don't have to populate an array,
# you always need only the last two items:
prev2, prev1 = 1, 1
# We could omit this "if" check because the range(N-2) expression
# generates nothing when the input parameter is zero or less,
# that is: when N <= 2.
if N > 2:
# Note: in case of python3 use range(), in case of python2 use xrange()
for _ in range(N-2):
new = (2014 * prev1) + (69 * prev2)
prev2, prev1 = prev1, new
print prev1
要解决此问题,您不需要数组,但即使您需要数组,也可以使用j
从2
到N-1
运行for j in range(2, N):
循环变量。请注意,在python中,您只需使用array[-1]
和array[-2]
来处理数组的最后两项,而不是计算绝对索引(如array[N-1]
)。 Python数组可以使用相对于数组末尾的负数进行索引。
答案 1 :(得分:0)
python中没有j++
。使用j += 1
。