嗨,大家好!我回来的另一篇文章是我以前关于安全编码的文章。这次我们将不涉及任何理论上的东西。几个月前,我为学生编写了Python程序,以便他们练习基本的BODMAS问题。目的是使程序生成随机的问题集(用户要输入的问题数),然后检查输入的答案是否正确。现在,显然,对我来说编码很容易,但是,我必须确保5/2 = 2.5与2.500一样正确。因此,我无法匹配两个字符串。我不得不提出一个不同的解决方案。为了玩得开心,看看我的学生或志愿者是否可以提出该程序中的漏洞,我专门编写了一个弱程序。现在,我对程序进行了修改,以使所有人都可以更轻松地识别其中的错误和漏洞。
现在,这是我要您执行的操作:
- 不要看代码。只需编译,运行它,看看是否可以找出代码中的漏洞。
- 如果您不能确定第1步中的漏洞,即使您没有发现,请去看一下程序代码,并尝试找出您错过了什么!
完成后,请评论您认为代码中的漏洞以及如何纠正这些漏洞!
开始了!!
给定输入:
3
6
-1
小型基本Python挑战赛程序
## Note: This program has been modified a bit for
## GeeksForGeeks article
import random,operator
print ('===========================================')
def randomCalc(i,j):
ops = {'+':operator.add,
'-':operator.sub,
'*':operator.mul,
'/':operator.truediv }
num = [1,2,3,4]
num1,num2 = num[i],num[j]
op = (list(ops.keys()))[i]
answer = round(ops.get(op)(num1,num2),3)
print('What is {} {} {}?\n'.format(num1, op, num2))
return answer
def askQuestion(i):
answer = randomCalc(i,i+1)
guess = float(input())
return guess == answer,answer
def quiz(numOfQues):
print('\nWelcome. This is a '+str(numOfQues)+' question math quiz.')
print('Your answer should be correct to three decimal places.\n')
score = 0
for i in range(numOfQues):
correct,ans = askQuestion(i)
if correct:
score += 1
print('Correct!\n')
else:
print('Incorrect! The correct answer is ' + str(ans)+'\n')
return ('Your score was {}/'+str(numOfQues)).format(score)
# Driver Code
print (quiz(3))
输出:
===========================================
Welcome. This is a 3 question math quiz
Your answer should be correct to three decimal places.
What is 1 + 2?
Correct!
What is 2 * 3?
Correct!
What is 3 - 4?
Correct!
Your score was 3/3
关于作者:
Vishwesh Shrimali是BITS Pilani的机械工程专业的学生。他实现了关于所有要求的知识,他的分支机构白帽子黑客,网络安全运算符和前竞争程序员都没有讲过。作为坚定地相信Python力量的人,他的大部分工作都使用相同的语言。每当他除了编程,上课,看CSI Cyber之外,都会散步很长一段时间,在寂静中弹吉他。他的人生座右铭是–“享受生活,因为这值得享受!”
如果您还希望在此处展示您的博客,请参阅GBlog,以在GeeksforGeeks上撰写来宾博客。