基本的Python编程挑战

嘿,伙计们!我带着我的另一篇文章回来了 上一篇关于安全编码的文章 .这一次我们不打算讨论任何理论问题。几个月前,我用Python为我的学生编写了一个程序,这样他们就可以练习基本的BODMAS问题。其目的是程序应生成随机的问题集(用户输入的问题数量),然后检查输入的答案是否正确。显然,我很容易编写代码,但我必须确保5/2=2.5与2.500一样正确。所以,我不能去匹配两个字符串。我必须想出一个不同的解决方案。为了玩得开心,看看我的学生或志愿者是否能在程序中发现漏洞,我专门编写了一个弱程序。现在,我修改了这个程序,让大家更容易识别其中的错误和漏洞。

null

现在,我想让你们做的是:

  1. 不要看代码。只需编译它,运行它,看看你是否能找出代码中的漏洞。
  2. 如果你不能在第一步中找出漏洞,或者即使你已经找到了,那就去看看程序代码,试着找出你错过了什么!

完成后,请评论您认为代码中存在哪些漏洞,以及您将如何纠正这些漏洞!

开始了!!

给定输入:

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 {} {} {}?' . 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 ( 'Welcome. This is a ' + str (numOfQues) + ' question math quiz.' )
print ( 'Your answer should be correct to three decimal places.' )
score = 0
for i in range (numOfQues):
correct,ans = askQuestion(i)
if correct:
score + = 1
print ( 'Correct!' )
else :
print ( 'Incorrect! The correct answer is ' + str (ans) + '' )
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

如果您发现任何不正确的地方,请写评论,或者您想分享有关上述主题的更多信息!!

关于作者:

维什韦什·施里马里 是BITS Pilani大学机械工程专业的本科生。他满足了分支机构没有教过的所有要求——白帽黑客、网络安全运营商,以及一位前竞争对手程序员。作为Python强大功能的坚定信徒,他的大部分作品都是用同一种语言完成的。每当他有时间除了编程、上课、看CSI网络之外,他就会去散步,默默地弹吉他。他的人生座右铭是:“享受生活,因为它值得享受!”

如果你也想在这里展示你的博客,请参见 吉微博 在Geeksforgek上写客博。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享