PTA题库1047、1072、1076的Python实现解析

版权申诉
0 下载量 8 浏览量 更新于2024-10-05 收藏 1KB ZIP 举报
资源摘要信息:"PTA题目1047、1072、1076的Python语言实现详细解析" 在信息技术的学习过程中,编程题目的实现是检验编程能力的重要环节。PTA(Programming Teaching Assistant)是一个面向编程教育的在线评测系统,它提供了一系列的编程练习题目,帮助学生和程序员通过实践来提高自己的编程技能。本次文档将详细介绍PTA题目1047、1072、1076的Python语言实现方法。 ### 题目1047:分段函数求值 **描述**:该题目要求编写一个Python函数,根据给定的分段函数,计算特定输入值x的函数值。分段函数可能涉及线性方程、二次方程甚至特定条件下的常数值。编写函数需要考虑如何处理不同的函数段和边界条件,确保在所有可能的输入值下都能返回正确的结果。 **Python实现**: ```python def piecewise_function(x): if x < 1: return 0.5 * x + 2 # 当x小于1时的函数表达式 elif 1 <= x < 3: return x**2 - 4*x + 5 # 当1<=x<3时的函数表达式 else: return -3*x + 10 # 当x大于等于3时的函数表达式 # 测试代码 print(piecewise_function(-1)) # 应输出结果为2.5 print(piecewise_function(2)) # 应输出结果为-2 print(piecewise_function(4)) # 应输出结果为-2 ``` ### 题目1072:最大公约数与最小公倍数 **描述**:该题目要求编写两个Python函数,一个用于计算两个非负整数的最大公约数(GCD),另一个用于计算它们的最小公倍数(LCM)。最大公约数是两个或更多整数共有约数中最大的一个,而最小公倍数则是能被两个或更多整数整除的最小正整数。 **Python实现**: ```python def gcd(a, b): while b: a, b = b, a % b return a def lcm(a, b): return a * b // gcd(a, b) # 测试代码 print(gcd(4, 6)) # 应输出结果为2 print(lcm(4, 6)) # 应输出结果为12 ``` ### 题目1076:求解一元二次方程 **描述**:该题目要求编写一个Python函数,用于求解一元二次方程ax^2 + bx + c = 0的根。根据判别式b^2 - 4ac的值,方程可能有两个实根、一个实根或没有实根。编写函数需要考虑使用不同的数学公式来求解方程的根。 **Python实现**: ```python import math def solve_quadratic_equation(a, b, c): discriminant = b**2 - 4*a*c if discriminant > 0: root1 = (-b + math.sqrt(discriminant)) / (2*a) root2 = (-b - math.sqrt(discriminant)) / (2*a) return root1, root2 elif discriminant == 0: root = -b / (2*a) return root, else: real_part = -b / (2*a) imaginary_part = math.sqrt(-discriminant) / (2*a) return (real_part + imaginary_part*1j,), (real_part - imaginary_part*1j,) # 测试代码 print(solve_quadratic_equation(1, -3, 2)) # 应输出结果为(2.0, 1.0) print(solve_quadratic_equation(1, 2, 1)) # 应输出结果为(-1.0,) print(solve_quadratic_equation(1, 0, 1)) # 应输出结果为(0.0+1.0j, 0.0-1.0j) ``` 以上是针对PTA题目1047、1072、1076的Python实现解析。通过对这些题目的练习,学习者可以提高编程技能,包括基本语法的应用、算法逻辑的设计以及复杂数学问题的求解。这对于编程初学者和希望通过编程提升逻辑思维能力的学生来说,是一次很好的锻炼机会。通过实际编码解决问题,可以加深对编程语言特性的理解,为解决实际问题打下坚实的基础。
2023-06-09 上传

优化这段SQL:SELECT CONCAT( HOUR ( mail_send_time ) DIV 1 * 1, ':00-', HOUR ( mail_send_time ) DIV 1 * 1, ':59' ) AS timeInterval, IFNULL( COUNT( * ), 0 ) AS total, IFNULL( SUM( contact_account_type in (SELECT code_description FROM dwd_t_code_value WHERE code_value = '01') ), 0 ) AS wxTotal, IFNULL( SUM( contact_account_type IN (SELECT code_description FROM dwd_t_code_value WHERE code_value = '02') ), 0 ) AS qqTotal, IFNULL( SUM( local_action = (SELECT code_description FROM dwd_t_code_value WHERE code_value = '05') AND contact_account_type = (SELECT code_description FROM dwd_t_code_value WHERE code_value = '01') ), 0 ) AS wxSend, IFNULL( SUM( local_action = (SELECT code_description FROM dwd_t_code_value WHERE code_value = '06') AND contact_account_type = (SELECT code_description FROM dwd_t_code_value WHERE code_value = '01')), 0 ) AS wxReceive , IFNULL( SUM( local_action = (SELECT code_description FROM dwd_t_code_value WHERE code_value = '05') AND contact_account_type = (SELECT code_description FROM dwd_t_code_value WHERE code_value = '02')), 0 ) AS qqSend, IFNULL( SUM( local_action = (SELECT code_description FROM dwd_t_code_value WHERE code_value = '06') AND contact_account_type = (SELECT code_description FROM dwd_t_code_value WHERE code_value = '02')), 0 ) AS qqReceive FROM dwd_t_friend_talk, dwd_t_code_value WHERE person_no = '653129200105072624' AND contact_account_type IN ( '微信', 'QQ' ) AND friend_account <> '' AND contact_account_type <> '' AND mail_send_time IS NOT NULL AND mail_send_time <> '' GROUP BY HOUR ( mail_send_time ) DIV 1

2023-06-09 上传
2023-06-03 上传