¡Hola chicos! Vuelvo con otro artículo, mi artículo anterior sobre codificación segura.. Esta vez no vamos a entrar en nada teórico. Hace unos meses escribí un programa en Python para mis alumnos para que puedan practicar preguntas básicas de BODMAS. El propósito era que el programa generara un conjunto aleatorio de preguntas (número de preguntas que debe ingresar el usuario) y luego verificar si la respuesta ingresada es correcta o no. Ahora, obviamente fue bastante fácil para mí codificar, pero tenía que asegurarme de que 5/2 = 2.5 es tan correcto como 2.500. Entonces, simplemente no podía ir y unir dos cuerdas. Tuve que pensar en una solución diferente. Solo para divertirme y ver si alguno de mis estudiantes o voluntarios podía encontrar una vulnerabilidad en el programa, específicamente escribí un programa débil. Ahora, he modificado el programa para que sea más fácil para todos ustedes identificar los errores y las vulnerabilidades que contiene.
Ahora, esto es lo que quiero que hagas:
- No mires el código. Simplemente compílelo, ejecútelo y vea si puede descubrir las vulnerabilidades en el código.
- Si no puede averiguar las vulnerabilidades en el paso 1 o incluso si lo hizo, vaya y eche un vistazo al código del programa e intente averiguar cuáles son las cosas que se perdió.
Una vez que haya terminado, comente cuáles cree que son las vulnerabilidades en el código y cómo las corregirá.
¡¡Aquí vamos!!
Entrada dada:
3 6 -1
Programa para el pequeño desafío básico de 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))
Producción:
=========================================== Bienvenidos. Este es un examen de matemáticas de 3 preguntas. Su respuesta debe ser correcta con tres decimales. ¿Cuánto es 1 + 2? ¡Correcto! ¿Qué es 2 * 3? ¡Correcto! ¿Cuánto es 3 - 4? ¡Correcto! Tu puntaje fue 3/3
¡Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema discutido anteriormente!
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA