我被问到这是一个编码测试,但不知道答案.有人有主意吗?
我最近为某个公司的预采访做了一个编程问题.问题是:
创建一个django应用程序,当然是测试驱动,向世界展示斐波纳契的序列.应用程序应采用索引号并显示生成的斐波纳契序列.此外,应该有一个页面显示最近生成的序列.此外,Fibonacci有点不耐烦,不想永远等待,所以请确保您采取措施确保您的网络服务器有效运行.
我想出了以下内容:
from django.views.generic.simple import direct_to_template
from django.http import Http404
LARGEST_SEQUENCE = [0,1]
LARGEST = 1
LATEST = []
def fib(n):
"""Calculate the nth fibonacci sequence"""
global LARGEST
if n > LARGEST:
while n > LARGEST:
next = LARGEST_SEQUENCE[LARGEST] + LARGEST_SEQUENCE[LARGEST-1]
#print 'appending ', next
LARGEST_SEQUENCE.append(next)
LARGEST += 1
return LARGEST_SEQUENCE
else:
return LARGEST_SEQUENCE[0:n+1]
def latest(request):
results=[]
for n in LATEST:
result = fib(n)
results.append((n,result))
return direct_to_template(request, 'latest.html', {'results':results})
def index(request):
if request.method=="POST":
try:
n=int(request.POST.get('n'))
except:
return Http404
result …Run Code Online (Sandbox Code Playgroud) 有时,在一个人通过IAB和Android设备进行购买后,由于"TypeError:Incorrect padding"异常,客户端发送回服务器的签名无法进行base64解码.
服务器代码如下所示,其中"signature"从我们的客户端传递到服务器,从IAB API获取值:
signature_encoded = signature.encode()
key = RSA.importKey(GOOGLE_PLAY_STORE_KEY_PEM)
verifier = PKCS1_v1_5.new(key)
signed_data_hash = SHA.new(signed_data)
# fails here SOMETIMES
signature_decoded = base64.urlsafe_b64decode(signature_encoded)
Run Code Online (Sandbox Code Playgroud)
"签名"字符串的长度应该可以被4整除,但有时它们的长度为342并给出这个填充错误.
我已经尝试添加"=="到最后,这让我们绕过异常,但与"signed_data_hash"相比,结果无效(即verifier.verify(signed_data_hash,signature_decoded)返回False).
我不认为这是一次黑客攻击,因为我们看到的客户日志表明他们正在通过我们的购买流程.
这里的任何帮助将不胜感激!谢谢!
当我通过按下切割并粘贴在VIM中v,然后使用$,然后按下该行的末尾时d,下一行将向上移动到我正在切割的同一行.
我怎么阻止这个?