python简单习题2

这篇博客介绍了如何通过键盘输入三角形的三条边长计算其面积,以及如何处理一元二次方程的实数解和虚数解。通过实例展示了Python中处理复数的方法。

1. 键盘输入三角形三条边长,计算其面积。

p=a+b+c2p=\frac{a+b+c}{2}p=2a+b+c

S=p(p−a)(p−b)(p−c)S = \sqrt{p(p-a)(p-b)(p-c)}S=p(pa)(pb)(pc)

import math
a = float(input('边长a:'))
b = float(input('边长b:'))
c = float(input('边长c:'))
if a + b > c and b + c > a and a + c > b:
    p = (a + b + c)/ 2
    # s = math.sqrt(p * (p - a) * (p - b) * (p - c))
    s = (p * (p - a) * (p - b) * (p - c)) ** 0.5 
    print('三角形面积:', s)
else:
    print('不能构成三角形')

边长a:3
边长b:4
边长c:5
三角形面积: 6.0

2. 输入一元二次方程的系数a,b,c,如果有实数解,输出其实数解。如果没有实数解,输出其虚数解。

x=−b±b2−4ac2ax=\frac{-b±\sqrt{b^2-4ac}}{2a}x=2ab±b24ac

import math
a = float(input('a:'))
b = float(input('b:'))
c = float(input('c:'))
deta = b * b - 4 * a * c
g = (deta)**0.5
x1 = (-b + g)/ (2 * a)
x2 = (-b - g)/ (2 * a)
print('x1=', x1)
print('x2=', x2)

a:3
b:4
c:5
x1= (-0.6666666666666666+1.1055415967851332j)
x2= (-0.6666666666666666-1.1055415967851332j)

本次收获

import cmath
a = float(input('a:'))
b = float(input('b:'))
a = cmath.sqrt(a)
b = (b) ** 0.5
# c = math.sqrt(-1)   # math.sqrt()此函数不能开根号负数 
print(a, type(a))
print(b, type(b))

a:9
b:9
(3+0j) <class ‘complex’>
3.0 <class ‘float’>

a:-16
b:-16
4j <class ‘complex’>
(2.4492935982947064e-16+4j) <class ‘complex’>

cmath.sqrt() 是直接求得值的复数形式。
() ** 0.5 正数正常开根号,结果是float形。负数开根号直接得出对应复数。
而math.sqrt() 不能对复数使用

:- ) : - )

<think> 我们有两个引用,但用户需要的是Python简单习题的源码。根据引用[1]和[2],它们分别提供了两个练习题:一个是求5个数的和与平均数,另一个是冒泡排序。 用户要求是“Python简单习题的源码”,因此我们可以提供这两个例子,因为它们都是简单的练习题。 注意:引用[1]中有一个while循环的例子,引用[2]中有一个冒泡排序的例子。 我们将分别展示这两个例子,并给出简要说明。 </think>以下是两个Python简单习题的源码及分析,适合初学者练习基础语法: ### 1. 数字求和与平均值计算 ```python i = 1 sum = 0 while i <= 5: num = input('请输入第%d个数:' % i) # 格式化输入提示 a = int(num) # 转换为整数 sum += a # 累加 i += 1 # 计数器增加 print('和为:', sum) print('平均数为:', sum/5) # 计算平均值 ``` **功能分析**: 1. 使用`while`循环获取5个用户输入的数字 2. 通过`sum += a`实现累加求和 3. 最终计算并输出总和与平均值 4. 格式化字符串`%d`动态显示当前输入序号[^1] ### 2. 冒泡排序算法 ```python def bubble_sort(arr): n = len(arr) for i in range(n): # 遍历所有元素 for j in range(0, n-i-1): # 每次循环减少已排序部分 if arr[j] > arr[j+1]: # 比较相邻元素 arr[j], arr[j+1] = arr[j+1], arr[j] # 位置交换 return arr # 测试示例 if __name__ == "__main__": test_arr = [64, 34, 25, 12, 22, 11, 90] print("排序前:", test_arr) print("排序后:", bubble_sort(test_arr)) ``` **算法原理**: 1. 双重循环遍历列表,外层控制遍历轮数 2. 内层比较相邻元素,若前大于后则交换位置 3. 每轮将最大元素"冒泡"到末尾 4. 时间复杂度为$O(n^2)$,空间复杂度$O(1)$[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值