《Python数学编程》练习-day009:编写一个计算程序(4)[求解二次方程的根]

《Python数学编程》练习-day009:编写一个计算程序(4)[求解二次方程的根]

提示→《Python数学编程》练习系列往期笔记,如下 👇:

Day1:《Python数学编程》练习-day001:斐波那契序列
Day2:《Python数学编程》练习-day002:分数操作
Day3:《Python数学编程》练习-day003:基本数学运算
Day4:《Python书序编程》练习-day004:复数
Day5:《Python书序编程》练习-day005:数值输入
Day6:《Python书序编程》练习-day006:计算整数因子
Day7:《Python书序编程》练习-day007:生成乘法表
Day8:《Python书序编程》练习-day008:测量单位转换


提示:菜鸟一枚,此系列文主要是用于我自己的学习记录,如果能对您有帮助,我荣幸至极。


前言

今天这篇笔记,主要学习一下使用Python求解二次方程的根,不涉及到非常高深的内容。


提示:以下是本篇文章正文内容。

一、第四个数学计算程序:求解二次方程的根

二次方程的形式,下:
  a x 2 + b x + c = 0 \ ax^{2}+bx+c = 0  ax2+bx+c=0
对应的根公式:
x 1 = − b + b 2 − 4 a c 2 a (1) \tag{1}x_1=\frac{-b +\sqrt{b^{2}-4ac}}{2a} x1=2ab+b24ac (1)
x 1 = − b − b 2 − 4 a c 2 a (2) \tag{2}x_1=\frac{-b -\sqrt{b^{2}-4ac}}{2a} x1=2abb24ac (2)


(求解程序是是把上面求根的公式(1)、(2)进行代码化)。

二、程序

1.求解二次方程的根

代码如下:

def roots(a, b, c):
	# (b**2 - 4*a*c) ** 0.5,在x_1和x_2中重复出现,如果不进行赋值,则会重复写,使代码冗余
    D = (b**2 - 4*a*c) ** 0.5
    x_1 = (-b + D) / (2*a)
    x_2 = (-b - D) / (2*a)
    if x_1 == x_2:
        print('x1 = x2: {0}'.format(x_1))
    else:
        print('x1:{0}'.format(x_1))
        print('x2:{0}'.format(x_2))
    
if __name__ == '__main__':
    a = float(input('Enter a:'))
    b = float(input('Enter b:'))
    c = float(input('Enter c:'))
    roots(a, b, c)

求解例子:
  x 2 + 2 x + 1 = 0 \ x^{2}+2x+1 = 0  x2+2x+1=0
运行:

Enter a:1
Enter b:2
Enter c:1

结果:

>>> 
x1 = x2: -1.0
2.程序分析

这个程序主要主要用到的是:1)定义函数;2)if条件语句的反复运用,程序语法不难;3)把重复性的代码表达可以进行赋值。

总结

1.完成公式向程序语言的转化。
2.源代码上传到了资源。
3.重复代码进行赋值,减少重复。

### Python经典编程练习题 以下是部分经典的Python编程练习题,涵盖了基础语法、数据结构以及算法等内容: #### 基础题目 1. 编写程序打印出所有的"水仙花数"。所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身[^1]。 ```python for num in range(100, 1000): a = num // 100 b = (num % 100) // 10 c = num % 10 if a ** 3 + b ** 3 + c ** 3 == num: print(num) ``` 2. 使用嵌套循环实现三重循环求解方程 `a+b+c=10` 的所有正整数解。 ```python solutions = [] for a in range(0, 11): for b in range(0, 11 - a): c = 10 - a - b solutions.append((a, b, c)) print(solutions) ``` #### 数据处理类题目 3. 输入某年某月某日,判断这一天是这一年的第几天? ```python def is_leap_year(year): return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0) def day_of_year(year, month, day): days_in_month = [31, 29 if is_leap_year(year) else 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] total_days = sum(days_in_month[:month - 1]) + day return total_days print(day_of_year(2023, 7, 1)) # 输出应为182 ``` #### 字符串操作类题目 4. 将字符串中的单词按字母顺序排列,并去除重复项。 ```python text = "hello world and practice makes perfect and hello world again" words = text.split() unique_words = sorted(set(words)) result = ' '.join(unique_words) print(result) ``` #### 列表推导式应用 5. 创建列表 `[1, 4, 9, ..., n^2]` 并计算其中偶数值的平方之和。 ```python n = 10 square_list = [i**2 for i in range(1, n+1)] even_squares_sum_sqrt = sum([int(i**(1/2)) for i in square_list if i%2==0]) print(even_squares_sum_sqrt) ``` 以上仅列举了一小部分内容作为示例,完整的100道经典习题可进一步扩展至更复杂的主题如文件读写、网络爬虫等实际应用场景中去设计更多挑战性的任务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z-Code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值