python课堂笔记课后练习(高琪400集第一季)

背景:纯python小白一个,跟着视频学了学python,做做练习。如果有什么错误或者更好的办法,跪请大佬们和我分享~(持续更新)

1.#定义一个函数实现反向输出一个整数,如:输入3245,输出5432

解题思路:我考虑的是将输入的数字拆成列表元素,通过sort()逆序排列后再输出。

def reverse_number():
m =[]

num_input = input('Enter a number:')

for i in num_input:

    m.append(i)
    
m.sort(reverse=True)

print(''.join(m))#将列表转换为字符串

reverse_number()

题目如上
解题思路:利用 for 循环应该是比较简单的。
我出错的点:在设置range的时候我使用的是range(n),得出的结果不准确,其实应该使用range(n+1)才能准确计算。

def m(n):

sum = 0
for i in range(n+1):
    
    sum+= (i/(i+1))
    
print('The total is:',sum)

m(2000)

3.#输入三角形三个顶点的坐标,若有效则计算三角形的面积;如坐标无效,则给提示。
解题思路:首先判断三个顶点是否在同一条直线上,若是,则为无效坐标,给出提示,若不是,则根据给出的坐标算出三条边,然后按照海伦公式算出半周长,再计算三角形面积。
#引入math
import math
x1 = float(input(‘x1:’))
y1 = float(input(‘y1:’))
x2 = float(input(‘x2:’))
y2 = float(input(‘y2:’))
x3 = float(input(‘x3:’))
y3 = float(input(‘y3:’))

if (x1-x2)(y1-y2) == (x2-x3)(y2-y3):

print(‘三点在同一条直线上!')

else:

#采用s=(a+b+c)/2求得半周长后用求面积公式求解
a = float(math.sqrt((x1-x2)**2+(y1-y2)**2))
b = float(math.sqrt((x2-x3)**2+(y2-y3)**2))
c = float(math.sqrt((x1-x3)**2+(y1-y3)**2))
s =(a+b+c)/2
print(a,b,c)
print(s)
#计算三角线面积
area =float(math.sqrt((s*(s-a)*(s-b)*(s-c))))
print(area)

在网上看了一下如何优化第一步的输入过程(实在太麻烦了!复制粘贴都得6次):

1)eval() 函数用来执行一个字符串表达式,并返回表达式的值:
x1,y1 = eval((input(‘x1,y1:’)))
x2,y2 = eval(input(‘x2,y2:’))
x3,y3 = eval(input(‘x3,y3:’))
【当然也可以直接使用x1,y1,x2,y2,x3,y3=eval(…)这样的表达】

2)利用split()将输入的数字变成列表,此时的x1=data[0],x2=data[2],依此类推。
ipt = input(‘请输入x1,y1,x2,y2,x3,y3,以逗号隔开’)
coor = ipt.split(’,’)
data = [float(x) for x in coor]

4.输入一个毫秒数,将该数字换算成小时数、分钟数、秒数。
def TimeConverter():
解题思路:这个题非常简单,只需要除法就能搞定。

ms = int(input('请输入毫秒数:'))

#保留两位小数,但若ms太小,h就会显示为0。

s = round(ms/1000,2)

m = round(s/60,2)

h = round(m/60,2)

print('{0}换算后等于{1}秒,等于{2}分钟,等于{3}小时'.format(ms,s,m,h))

TimeConverter()

做题过程中,查了一下如何让python计算结果保留两位小数A:

设结果为a:
1)round(a,2)
2)’%.2f’ % a
3)Decimal(a).quantize(Decimal(‘0.00’))

你可能感兴趣的:(python)