首页 > 编程语言 >结对编程--四则运算

结对编程--四则运算

时间:2024-04-14 14:55:25浏览次数:34  
标签:结对 编程 -- 四则运算 random answer 100 expression

结对编程--四则运算(Python)

合作伙伴: 2252619

前言

按照结对编程的原则,我和小组另一个成员进行了两人进行了结对编程,我们开发的结对项目的是小学的四则运算,具体就是随机生成四则运算题目,供学生答题并返回正误。经过讨论,介于Python优秀的计算功能以及时间限制,我们将采用Python开发一个控制台程序。

功能要求

小学老师要每周给同学出300道四则运算练习题。
–这个程序有很多种实现方式:

C/C++
C#/VB.net/Java
Excel
Unix Shell
Emacs/Powershell/Vbscript
Perl
Python
–两个运算符,100 以内的数字,不需要写答案(实现)

–需要检查答案是否正确,并且保证答案在 0..100 之间(实现)

–尽可能地多设置一些条件
添加的条件:
给出的题目的结果为0--100之间的整数
在算式中出现除法运算时,除法运算能够整除

编程阶段

由我负责编程,与我组队的同学在一旁观看。首先,我们先最整体的框架进行了讨论,决定了要实现的功能以及如何实现。然后,进入编程阶段,我的同伴与我断地进行交流沟通,并且在思路卡住的时候提出一些想法,最终实现了四则运算的题目。
代码如下:
`import random
import math

def generate_expression():
operators = ['+', '-', '*', '/']
while True:
num1 = random.randint(0, 100)
num2 = random.randint(1, 100)
num3 = random.randint(1, 100)
while num2 == num3:
num3 = random.randint(1, 100)
operator1 = random.choice(operators)
operator2 = random.choice(operators)
expression = f"{num1} {operator1} {num2} {operator2} {num3}"
try:
result = eval(expression)
if 0 <= result <= 100 and result == int(result):
if operator1 == '/':
if num1 % num2 == 0:
return expression, int(result)
elif operator2 == '/':
if num2 % num3 == 0:
return expression, int(result)
else:
return expression, int(result)
except ZeroDivisionError:
pass

def main():
print("欢迎使用四则运算生成器!输入n退出程序。")
while True:
expression, answer = generate_expression()
print("题目:", expression)
user_answer = input("请输入答案:")
if user_answer == 'n':
print("感谢使用,再见!")
break
try:
user_answer = int(user_answer)
if user_answer == answer:
print("回答正确!")
else:
print("回答错误!")
except ValueError:
print("请输入一个整数或者输入n退出程序。")

if name == "main":
main()
`

运行展示

输入正确/错误答案:

包涵除法且可以整除:

包涵乘法:

非法输入:

退出程序:

总结与收获

这次与另外同学的结对编程,发现自己某些方面的不足,某些考虑不全面,有时候同学都可以一针见血的指出,同时两个人同时编程感觉更高效考虑的更全面。结对编程过程中,和同伴可以分享彼此的技术知识和经验。这种交流能够促进双方的技术成长,学习到新的编程技巧和方法。

标签:结对,编程,--,四则运算,random,answer,100,expression
From: https://www.cnblogs.com/muovo/p/18134160

相关文章

  • React.js 网站开发:实现滚动加载动画
    React.js网站开发:实现滚动加载动画极客前端探索者前沿技术的探索者,编码艺术的实践者 最近在开发官网的过程中,涉及到UI动画的制作,其中滚动效果的使用比较频繁,特此整理一下,以便查询和温习。平滑向上过渡动画这种往下滚动过渡渐变显示的动画是最常......
  • python+uwsgi警告
     1.出现这个警告是python没有安装uwsgi !!!!!!!!!!!!!!WARNING!!!!!!!!!!!!!! norequestpluginisloaded,youwillnotbeabletomanagerequests. youmayneedtoinstallthepackageforyourlanguageofchoice,orsimplyloaditwith--plugin. !!......
  • COMP 2049 浮点数与简单算术表达式
    COMP2049语言与计算课程:浮点数与简单算术表达式1浮点数字设计一个右线性语法G1,根据以下规则生成二进制浮点文字的语言:每个数字可以是有符号的,也可以是无符号的。–在1.01中无符号,在+1.01或-1.10中有符号数字部分(也称为值字段)必须非空,并且可以选择包含小数点“.”,在这种情况下,它后......
  • 24/04/09 CSP-J 模拟赛
    \(\color{red}(1)\)P2296[NOIP2014提高组]寻找道路在有向图\(G\)中,每条边的长度均为\(1\),现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件:路径上的所有点的出边所指向的点都直接或间接与终点连通。在满足条件\(1\)的情况下使路径最短。......
  • eBPF xdp和tc区别
     xdptc层次网卡驱动层数据链路层位置进入Linux网络协议栈之前在Linux网络协议栈中方向只有ingress有ingress和egress修改支持修改报文支持修改报文,有skb结构,修改更方便cilium加载eBPF到虚拟网卡tc上来实现流量转发。......
  • 原型设计工具比较及实践
    一、对比分析墨刀、Axure、Mockplus等原型设计工具的各自的适用领域及优缺点。墨刀、Axure和Mockplus是常用的原型设计工具,它们各自适用于不同的场景和需求:墨刀(MockingBot):适用领域:墨刀适用于快速原型设计、用户界面设计和团队协作。它通常用于小型项目或个人项目,具有简单易用的......
  • java 单例模式
    单例模式(SingletonPattern)是Java中最简单的设计模式之一,这种类型的设计模式属于创建型模式。目的是确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。这样做可以节省系统资源,并且保证某些类在系统中只存在一个实例。主要解决:一个全局使用的类频繁地创建与......
  • populateBean方法解析
    populateBean方法实现的功能autowired解析Autowired实例,code如下:packagecom.gientech.populateBean.annotation;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;@ControllerpublicclassBook......
  • AOP解析
    AOPbean准备1AOPsample1.1创建切面packagecom.gientech.aop.xml.util;importorg.aspectj.lang.JoinPoint;importorg.aspectj.lang.ProceedingJoinPoint;importorg.aspectj.lang.Signature;importjava.util.Arrays;publicclassLogUtil{publicvoid......
  • ModuleNotFoundError: No module named 'formatter'
    在学习韦东山Linux下载BSP章节时 走到第四步的时候出现ModuleNotFoundError:Nomodulenamed'formatter'的错误查了资料发现是第一步的问题,原因在于对于ubantu22.04来说formatter已在python3.4+标记成废弃接口,就算你按照网上教程添加这个模块也无法解决。解决方法是第一步......