习题
1.(几何学:一个五边形的面积)编写一个程序,提示用户输入五边形顶点到中心距离r,然后算出五边形的面积,如下图所示。
计算五边形面积的公式是Area = 5×s×s/(4×tan(π/5)),这里的s是边长。边长的计算公式是 s =2rsin(π/5),这里的r是顶点到中心距离。
五边形.png
import math
import turtle
r = eval(input("Enter the length from the center to a vertex: "))
s = 2 * r * (math.sin(math.pi/5))
Area = 5 * s * s / (4 * (math.tan(math.pi/5)))
turtle.circle(r, 360, 5)
print("The area of the pentagon is ",round(Area,2))
2.(几何学:大圆距离)大圆距离是球面上两点之间的距离。假设(x1,y1)和(x2,y2)是两点的经度和纬度,两点之间大圆距离可以利用以下公式计算:
d = radius * arccos(sin(x1) × sin(x2) × cos(x1) × cos(x2) × cos(y2-y1))
编写一个程序,提示用户输入地球表面两点经度和纬度的度数然后显示它们的大圆距离。地球的平均半径为6371.01km。注意:你需要使用math. radians函数将度数转化为弧度数,因为Python三角函数使用的是弧度。公式中的经纬度是西经和北纬。用负数表示东经和南纬。
import math
x1,y1 = eval(input("Enter point 1 (latitude and logitude): "))
x2,y2 = eval(input("Enter point 2 (latitude and logitude): "))
radius = 6371.01
#使用math. radians函数将度数转化为弧度数
x1 = math.radians(x1)
x2 = math.radians(x2)
y1 = math.radians(y1)
y2 = math.radians(y2)
d = radius * math.acos(math.sin(x1) * math.sin(x2) * math.cos(x1)
* math.cos(x2) * math.cos(y1 - y2))
print("The distance between the two points is ",d," km")
3.(几何学:估算面积)从网站找到佐治亚州亚特兰大、佛罗里达州奥兰多、大草原佐治亚、北卡罗来纳州夏洛特的GPS位置,然后计算出这四个城市所围成的区域的大概面积。
地图网站 www.gps-data-team.com/map
68923,Atlanta NE in US,GPS Position: 99°24'18"W, 40°24'37"N for x1,y1
73073,Orlando OK in US,GPS Position: 97°24'29"W, 35°56'40"N for x2,y2
36033,Georgiana AL in US,GPS Position: 86°38'5"W, 31°37'28"N for x3,y3
78.11,Charlotte TX in US,GPS Position: 98°39'20"W, 28°48'51"N for x4,y4
'''
import math
# 经纬度坐标值,转化为数值形式
x1,y1=99.405,40.410
x2,y2=97.408,35.944
x3,y3=86.634,31.624
x4,y4=98.656,28.814
# 经纬度转化为弧度数
x1,y1= math.radians(x1),math.radians(y1)
x2,y2 = math.radians(x2),math.radians(y2)
x3,y3 = math.radians(x3),math.radians(y3)
x4,y4 = math.radians(x4),math.radians(y4)
radius = 6371.01
# 计算城市间距离
dAO=radius * math.acos(math.sin(x1) * math.sin(x2) +
math.cos(x1) * math.cos(x2) * math.cos(y1 - y2))
dAG=radius * math.acos(math.sin(x1) * math.sin(x3) +
math.cos(x1) * math.cos(x3) * math.cos(y1 - y3))
dAC=radius * math.acos(math.sin(x1) * math.sin(x4) +
math.cos(x1) * math.cos(x4) * math.cos(y1 - y4))
dOG=radius * math.acos(math.sin(x3) * math.sin(x2) +
math.cos(x3) * math.cos(x2) * math.cos(y3 - y2))
dCG=radius * math.acos(math.sin(x3) * math.sin(x4) +
math.cos(x3) * math.cos(x4) * math.cos(y3 - y4))
# 计算三角形的面积,ppt p63 面积公式
sAOG=(dAO+dAG+dOG)/2
sACG=(dAC+dAG+dCG)/2
areaAOG=math.sqrt(sAOG*(sAOG-dAG)*(sAOG-dAO)*(sAOG-dOG))
areaACG=math.sqrt(sACG*(sACG-dAG)*(sACG-dAC)*(sACG-dCG))
areaTotal=areaAOG+areaACG
# 输出结果
print("areaTotal = ",areaTotal)
4.(几何学:五角形的面积)五角形的面积可以使用下面的公式计算(s是边长)
Area = (5×s²)/ (4×tan(π/5))
编写一个程序,提示用户输入五边形的边长,然后显示面积。
import math
s = eval(input("Enter the side: "))
Area = (5 * ( s * s )) / (4 * (math.tan(math.pi/5)))
print("The area of the pentagon is", Area )
5.(几何学:一个正多边形的面积)正多边形是边长相等的多边形吗,而且所有的角都相等。计算正多边形面积的公式是:
Area = (n × s²)/(4×tan(π/n))
这里的s是边长。编写一个程序,提示用户输入边数以及正多边形的边长,然后显示他们的面积。
import math
n = eval(input("Enter the number of sides:"))
s = eval(input("Enter the side:"))
area = n * math.pow(s, 2) / (4 * math.tan(math.pi / n))
print("The area of the polygon is {:.2f}".format(s,n,area))
6.(找出ASCII码的字符)编写一个程序,接收一个ASCII码值(一个0~127之间的整数),然后显示它对应的字符。例如:如果用户输入97,程序将显示字符a。
x = eval(input("Enter an ASCII code:"))
print("The character is ",chr(x))
7.(随机字符)编写一个程序,使用time.time()函数显示一个大写的随机字符。
# 大写的随机字符,对应的数字65~90
import time
a = int(time.time()) % 26 + 65
b = int(time.time()) % 26 + 97
print(chr(a)) # 随机大写,解题关键是确定 A~Z 的 ASCII 范围
print(chr(b)) # 随机小写
9.(金融应用程序:工资表)编写一个程序,读取下面的信息,然后打印一个工资报表。
雇员姓名(例如:史密斯)
一周工作时间(例如:10)
每小时酬报(例如:9.75)
联邦预扣税率(例如:20%)
州预扣税率(例如:9%)
name = input("Enter emplyee's name:")
hoursWorked = eval(input("Enter number of hours worked in a week:"))
payRate = eval(input("Enter hourly pay rate:"))
ftRate = eval(input("Enter federal tax withholding rate:"))
stRate = eval(input("Enter state tax withholding rate:"))
grossPay = hoursWorked * payRate
federalWithholding = hoursWorked * payRate * ftRate
stateWithholding = hoursWorked * payRate * stRate
totalDeduction = federalWithholding + stateWithholding
netPay = grossPay * (1 - ftRate - stRate)
print()
print(
"Employee Name: {}\nHours Worked: {:.1f}\nPay Rate:${:.1f}\nGross Pay: ${:.1f}".format(
name,
hoursWorked,
payRate,
grossPay))
print()
print(
"Decutions:\n Federal Withholding (20.0%):${:.1f}\n State Withholding (9.0%):${:.2f}\n Total Deduction:${:.2f}".format(
federalWithholding,
stateWithholding,
totalDeduction))
print()
print("Net Pay:$ {:.2f} ".format(netPay))
10.(Turtle显示统一码)编写一个程序,显示希腊字母。αβγδεζηθ
print("\u03b1""\u03b2""\u03b3""\u03b4""\u03b5""\u03b6""\u03b7""\u03b8")
#直接打印希腊字母的字符编码即可。
11.(反向数字)编写一个程序,提示用户输入一个四位整数,然后显示颠倒各位数字后的数。
num = eval(input("Enter a integer:"))
print(str(num)[::-1]) # 切片倒序打印
网友评论