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

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

时间:2024-04-14 17:22:05浏览次数:32  
标签:结对 randint -- random Python answer 100 expression correct

合作伙伴: 2252720
`import random

def generate_expression():
operators = ['+', '-', '×', '÷'] # 可用的运算符
operator = random.choice(operators) # 随机选择一个运算符
if operator == '+':
num1 = random.randint(0, 100) # 生成第一个操作数,范围在0到100之间
num2 = random.randint(0, 100 - num1) # 生成第二个操作数,确保结果在0到100之间
elif operator == '-':
num1 = random.randint(0, 100) # 生成被减数,范围在0到100之间
num2 = random.randint(0, num1) # 生成减数,确保结果在0到100之间
elif operator == '×':
num1 = random.randint(0, 10) # 生成乘数,范围在0到10之间
num2 = random.randint(0, 10) # 生成被乘数,范围在0到10之间
else: # 除法运算
num2 = random.randint(1, 10) # 避免除数为0,生成一个不为0的除数
num1 = random.randint(1, 10) * num2 # 生成被除数,确保结果在0到100之间
return f"{num1} {operator} {num2}"

def check_answer(expression, user_answer):
try:
result = eval(expression) # 计算表达式的结果
if result == int(user_answer): # 检查用户答案是否正确
return True, result
else:
return False, result
except ZeroDivisionError: # 避免除数为0的情况
return False, "Error: Division by zero"
except:
return False, "Error: Invalid expression"

expressions = []
while len(expressions) < 300:
expression = generate_expression() # 生成一个表达式
expressions.append(expression) # 将表达式加入列表

correct_count = 0
for i, expression in enumerate(expressions, start=1):
print(f"Question {i}: {expression}") # 打印出题目
user_answer = input("Your answer: ") # 用户填写答案
is_correct, correct_answer = check_answer(expression, user_answer) # 检查答案是否正确
if is_correct:
print("Correct!")
correct_count += 1
else:
print(f"Incorrect. Correct answer is {correct_answer}")

print(f"\nYou got {correct_count} out of {len(expressions)} correct.") # 输出最终得分
`
展示:

总结:结对编程是一种软件开发方法,其中两个开发者(也称为“伙伴”或“合作者”)共同在一个计算机上工作,共同完成一个任务或项目。他们通常轮流担任“驾驶员”和“观察员”的角色。驾驶员编写代码,而观察员则提出反馈、提出解决方案和思考更高层次的设计决策。

在进行四则运算程序的开发过程中,结对编程可以带来以下优势:

更高的代码质量:两个开发者共同审查和改进代码,可以更容易地发现和纠正错误,从而提高代码的质量。

更好的设计:两个开发者可以共同讨论和设计程序的架构和算法,从而产生更健壮、可维护和可扩展的代码。

知识分享:结对编程过程中,开发者可以分享彼此的知识和经验,从而加深对技术的理解,并学习新的编程技巧和最佳实践。

减少错误:由于两个开发者共同审查和测试代码,因此可以更早地发现和纠正错误,减少在后续阶段修复错误的成本。

增强团队合作:结对编程促进了团队之间的合作和沟通,有助于建立积极的团队氛围和共同的目标。

在开发四则运算程序时,结对编程可以帮助开发者更有效地应对各种挑战,包括生成合适的数学表达式、验证用户输入的答案、处理错误情况等。通过结对编程,开发者可以共同努力,更快地完成任务,并确保生成的代码质量高,功能完善。

标签:结对,randint,--,random,Python,answer,100,expression,correct
From: https://www.cnblogs.com/muci6/p/18134394

相关文章

  • 2
    ForeignculturehasgreateffectonChineseculture.Doestheadvantageofsucheffectoutweighthedisadvantageordoesthedisadvantageoutweightheadvantage?外国文化对中国文化有很大的影响。这样的效果是利大于弊还是弊大于利?正:马克思·韦伯告诉你,当今西方......
  • 原型设计工具比较及实践
    一、1、墨刀在快速移动端原型制作方面有着明显优势,尤其适合初学者。其简洁易用的界面让用户上手容易,且能够直接在手机上演示原型,提供了更直观的体验。然而,相较于Axure,墨刀在交互效果、控件组合和操作面板上稍显不足。交互效果的连线方式可能会让用户感到困惑,且自带的交互效果相......
  • 华中农业大学第十三届程序设计竞赛
    题目链接Bsyh喜欢猫猫,所以zzy为了哄syh睡觉,决定扮成猫猫。给定一个长为\(n\)的序列\(\{a_i\}\)和三个正整数\(x,y,z\),计算\(\sum_{i=1}^n\sum_{j=1}^na_ia_j\lfloor\dfrac{x\gcd(a_i,a_j)+y}{z}\rfloor\)的值。答案对\(10^9+7\)取模。如果这个问题的答案能够......
  • Java调用第三方接口获取数据并存储,思路加代码
    思路:1.根据第三方接口返回的字段来创建实体类,用来接收数据2.建立连接,提供两种方式。来获取数据3.实体类转换并存储方法一:URL建立连接进行接收数据依赖<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifa......
  • nlog
    <?xmlversion="1.0"encoding="utf-8"?><nlogxmlns="http://www.nlog-project.org/schemas/NLog.xsd"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"autoReload="true"throwCo......
  • 【数学】向量点乘、叉乘的理论、应用及代码实现(C++)
    前言我总结了一下向量点乘,叉乘的概念,以及他们的应用及相关C++代码的实现。blog这类问题也是技术面试经常碰到的,一次研究透了会有收获。1向量向量具有大小和方向。共线向量:两个平行的向量为共线向量。1.1叉积CrossProduct$$\vec{a}\times\vec{b}=|\vec{a}||\vec{b}|\sin......
  • 数据结构:时间复杂度
    时间复杂度:表示算法执行所需的大致时间,记作O(N)。一、当执行次数为常量时记作O(1)。二、执行次数只保留最高阶项例:已知时间复杂度的函数式为F(N)=N^2+2N+10,N无穷大时,2N和10对函数影响的无穷小,可以忽略不计,因此只取N^2为执行次数记作O(N^2)。三、如果最高阶存在且不为1,则......
  • centos 监控
    1.pom.xml引入<dependency><groupId>ch.ethz.ganymed</groupId><artifactId>ganymed-ssh2</artifactId><version>262</version></dependency>ViewCode 2.java代码packa......
  • 第一次实验
    一、原型工具优缺点对比墨刀、Axure、Mockplus都是常见的原型设计工具,它们在适用领域和优缺点上有着各自的特点:墨刀:适用领域:墨刀适用于快速原型设计和团队协作。它的界面简洁易用,支持多种交互和动画效果,适合用于移动应用和网页的设计。优点:简单易上手,无需编码经验;提供丰富的交......
  • 程序员思维
    “你的成功可以复制吗?”,在很久之前我的上级问过这样一个问题。 我认为这样的问题很虚,工作完成就行了,不需要那么多道理。然而随着时间的推移,我发现这的确是一个好问题。因为它可以区分出你是碰巧把事情做对了,还是你具备了一直做对事情的能力,二者是有本质区别的。碰巧做对,说明你......