十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1.(几何学:一个五边形的面积)编写一个程序,提示用户输入五边形顶点到中心距离r,然后算出五边形的面积,如下图所示。
创新互联是一家专业提供房县企业网站建设,专注与网站制作、网站建设、H5高端网站建设、小程序制作等业务。10年已为房县众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
计算五边形面积的公式是Area = 5×s×s/(4×tan(π/5)),这里的s是边长。边长的计算公式是 s =2rsin(π/5),这里的r是顶点到中心距离。
2.(几何学:大圆距离)大圆距离是球面上两点之间的距离。假设(x1,y1)和(x2,y2)是两点的经度和纬度,两点之间大圆距离可以利用以下公式计算:
d = radius * arccos(sin(x1) × sin(x2) × cos(x1) × cos(x2) × cos(y2-y1))
编写一个程序,提示用户输入地球表面两点经度和纬度的度数然后显示它们的大圆距离。地球的平均半径为6371.01km。注意:你需要使用math. radians函数将度数转化为弧度数,因为Python三角函数使用的是弧度。公式中的经纬度是西经和北纬。用负数表示东经和南纬。
3.(几何学:估算面积)从网站找到佐治亚州亚特兰大、佛罗里达州奥兰多、大草原佐治亚、北卡罗来纳州夏洛特的GPS位置,然后计算出这四个城市所围成的区域的大概面积。
4.(几何学:五角形的面积)五角形的面积可以使用下面的公式计算(s是边长)
Area = (5×s²)/ (4×tan(π/5))
编写一个程序,提示用户输入五边形的边长,然后显示面积。
5.(几何学:一个正多边形的面积)正多边形是边长相等的多边形吗,而且所有的角都相等。计算正多边形面积的公式是:
Area = (n × s²)/(4×tan(π/n))
这里的s是边长。编写一个程序,提示用户输入边数以及正多边形的边长,然后显示他们的面积。
6.(找出ASCII码的字符)编写一个程序,接收一个ASCII码值(一个0~127之间的整数),然后显示它对应的字符。例如:如果用户输入97,程序将显示字符a。
7.(随机字符)编写一个程序,使用time.time()函数显示一个大写的随机字符。
9.(金融应用程序:工资表)编写一个程序,读取下面的信息,然后打印一个工资报表。
雇员姓名(例如:史密斯)
一周工作时间(例如:10)
每小时酬报(例如:9.75)
联邦预扣税率(例如:20%)
州预扣税率(例如:9%)
10.(Turtle显示统一码)编写一个程序,显示希腊字母。αβγδεζηθ
11.(反向数字)编写一个程序,提示用户输入一个四位整数,然后显示颠倒各位数字后的数。
主要就是做了两件事情:
1.生成一张有文本信息的JPG图片
2.写入EXIF信息
生成照片需要PIL和libjpeg
import Imageimport ImageDrawimport ImageFontdef create_pic(path, text=[], type='jpeg'):
img = Image.new("RGB", (2448, 3264), '#37b6ce')#颜色和大小
draw = ImageDraw.Draw(img)
font = ImageFont.truetype('ziti.ttf', 120)#ttf是字体,120是字号
for h in range(0, len(text)):#多行文本
draw.text((256, 256 + 120 * h), text[h], font=font)
img.save(path, type)#保存
# img.show()
读写EXIF信息需要pyexiv2,获取google的经纬度需要geopy
顺便说下经纬度的表示:
一般exif里看到的都是这样的57°55'56.6",是度,分,秒这么展示的,google上获取来的是十进制的57.9323888888888
所以需要转换一下再写进去
公式:57°55'56.6" =57+55/60+56.6/3600=57.9323888888888
import fractionsimport datetimeimport osimport geopyimport pyexiv2import timetemplate = pyexiv2.ImageMetadata('IMG_4408.JPG')template.read()#exif信息很多,所以找个真正手机拍摄的照片当模版googlev3=geopy.GoogleV3()place,gps=googlev3.geocode(location)#获取gps信息,location写地名,比如‘北京王府井’,偶尔会被墙,最好挂个代理def set_exif(path, date_time=None, gps=()):
"""
datetime=2014:10:04 12:41:38
geo=(lat=39.12315,lng=115.12231)
"""
metadata = pyexiv2.ImageMetadata(path)
metadata.read()
for k in template.exif_keys:
metadata[k] = pyexiv2.ExifTag(k, template[k].value)
if not date_time:
date_str=pyexiv2.utils.exif(date_time)
metadata['Exif.Photo.DateTimeOriginal'] = date_str
metadata['Exif.Photo.DateTimeDigitized'] = date_str
metadata['Exif.Image.DateTime'] = date_str
if len(geo)0:
c_lat = decimal2coordinate(geo[0], ['S', 'N'])
c_lng = decimal2coordinate(geo[1], ['W', 'E'])
metadata["Exif.GPSInfo.GPSLatitude"] = coordinate2rational(c_lat[0], c_lat[1], c_lat[2])
metadata["Exif.GPSInfo.GPSLatitudeRef"] = c_lat[3]
metadata["Exif.GPSInfo.GPSLongitude"] = coordinate2rational(c_lng[0], c_lng[1], c_lng[2])
metadata["Exif.GPSInfo.GPSLongitudeRef"] = c_lng[3]
else:
metadata._delete_exif_tag("Exif.GPSInfo.GPSLatitude")
metadata._delete_exif_tag("Exif.GPSInfo.GPSLatitudeRef")
metadata._delete_exif_tag("Exif.GPSInfo.GPSLongitude")
metadata._delete_exif_tag("Exif.GPSInfo.GPSLongitudeRef")
metadata.write()def decimal2coordinate(value, loc):
"""
loc=lat = ["S", "N"],lng = ["W", "E"]
retrun D,M,S,locate
"""
if value 0:
loc_value = loc[0]
elif value 0:
loc_value = loc[1]
else:
loc_value = ""
abs_value = abs(value)
deg = int(abs_value)
t1 = (abs_value - deg) * 60
min = int(t1)
sec = round((t1 - min) * 60, 5)
return (deg, min, sec, loc_value)def coordinate2rational(D, M, S):
return (fractions.Fraction(D, 1), fractions.Fraction(int((M + S / 60) * 100), 100), fractions.Fraction(0, 1))
from PIL import Image ### 此处为导出包,注意字母大小写
import os, os.path
# 指明被遍历的文件夹
rootdir =os.path.abspath(os.curdir)+'/Image/'
rootdir1=os.path.abspath(os.pardir)+"/Image/"
#打包用
if os.path.isdir(rootdir):
pass
else:
rootdir=rootdir1
size = 315, 560
i=0
for parent,dirnames,filenames in os.walk(rootdir):
for filename in filenames:
infile=os.path.join(parent,filename)
im = Image.open(infile) ### 此处Image.open(dir)为多数对象应用的基础.
im.thumbnail(size) ### 此处size 为长度为2的tuple类型,改变图片分辨率
im.save(infile) ### im.save(dir),图片处理的最后都用这个,就是保存处理过后的图片
i+=1
print(i,"Done")
要用pil包 安装如下:pip install pillow
python根据地址获取经纬度方法一:
from geopy.geocoders import Nominatim
#使用geopy查询
def geocodeN(address):
gps=Nominatim()
location=gps.geocode(address)
return location.longitude,location.latitude
使用Geopy包 : github.com/geopy/geopy (仅能精确到城镇,具体街道无结果返回)
另外还有一种使用高德地图或百度地图API的方法,有兴趣的朋友可以参考下。
参考链接: