📜  基本的Python编程挑战

📅  最后修改于: 2021-04-16 06:06:29             🧑  作者: Mango

嗨,大家好!我回来的另一篇文章是我以前关于安全编码的文章。这次我们将不涉及任何理论上的东西。几个月前,我为学生编写了Python程序,以便他们练习基本的BODMAS问题。目的是使程序生成随机的问题集(用户要输入的问题数),然后检查输入的答案是否正确。现在,显然,对我来说编码很容易,但是,我必须确保5/2 = 2.5与2.500一样正确。因此,我无法匹配两个字符串。我不得不提出一个不同的解决方案。为了玩得开心,看看我的学生或志愿者是否可以提出该程序中的漏洞,我专门编写了一个弱程序。现在,我对程序进行了修改,以使所有人都可以更轻松地识别其中的错误和漏洞。

现在,这是我要您执行的操作:

  1. 不要看代码。只需编译,运行它,看看是否可以找出代码中的漏洞。
  2. 如果您不能确定第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上撰写来宾博客。