1.(幾何學(xué):一個(gè)五邊形的面積)編寫一個(gè)程序,提示用戶輸入五邊形頂點(diǎn)到中心距離r,然后算出五邊形的面積,如下圖所示。
創(chuàng)新互聯(lián)是一家專業(yè)提供房縣企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為房縣眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
計(jì)算五邊形面積的公式是Area = 5×s×s/(4×tan(π/5)),這里的s是邊長。邊長的計(jì)算公式是 s =2rsin(π/5),這里的r是頂點(diǎn)到中心距離。
2.(幾何學(xué):大圓距離)大圓距離是球面上兩點(diǎn)之間的距離。假設(shè)(x1,y1)和(x2,y2)是兩點(diǎn)的經(jīng)度和緯度,兩點(diǎn)之間大圓距離可以利用以下公式計(jì)算:
d = radius * arccos(sin(x1) × sin(x2) × cos(x1) × cos(x2) × cos(y2-y1))
編寫一個(gè)程序,提示用戶輸入地球表面兩點(diǎn)經(jīng)度和緯度的度數(shù)然后顯示它們的大圓距離。地球的平均半徑為6371.01km。注意:你需要使用math. radians函數(shù)將度數(shù)轉(zhuǎn)化為弧度數(shù),因?yàn)镻ython三角函數(shù)使用的是弧度。公式中的經(jīng)緯度是西經(jīng)和北緯。用負(fù)數(shù)表示東經(jīng)和南緯。
3.(幾何學(xué):估算面積)從網(wǎng)站找到佐治亞州亞特蘭大、佛羅里達(dá)州奧蘭多、大草原佐治亞、北卡羅來納州夏洛特的GPS位置,然后計(jì)算出這四個(gè)城市所圍成的區(qū)域的大概面積。
4.(幾何學(xué):五角形的面積)五角形的面積可以使用下面的公式計(jì)算(s是邊長)
Area = (5×s2)/ (4×tan(π/5))
編寫一個(gè)程序,提示用戶輸入五邊形的邊長,然后顯示面積。
5.(幾何學(xué):一個(gè)正多邊形的面積)正多邊形是邊長相等的多邊形嗎,而且所有的角都相等。計(jì)算正多邊形面積的公式是:
Area = (n × s2)/(4×tan(π/n))
這里的s是邊長。編寫一個(gè)程序,提示用戶輸入邊數(shù)以及正多邊形的邊長,然后顯示他們的面積。
6.(找出ASCII碼的字符)編寫一個(gè)程序,接收一個(gè)ASCII碼值(一個(gè)0~127之間的整數(shù)),然后顯示它對應(yīng)的字符。例如:如果用戶輸入97,程序?qū)@示字符a。
7.(隨機(jī)字符)編寫一個(gè)程序,使用time.time()函數(shù)顯示一個(gè)大寫的隨機(jī)字符。
9.(金融應(yīng)用程序:工資表)編寫一個(gè)程序,讀取下面的信息,然后打印一個(gè)工資報(bào)表。
雇員姓名(例如:史密斯)
一周工作時(shí)間(例如:10)
每小時(shí)酬報(bào)(例如:9.75)
聯(lián)邦預(yù)扣稅率(例如:20%)
州預(yù)扣稅率(例如:9%)
10.(Turtle顯示統(tǒng)一碼)編寫一個(gè)程序,顯示希臘字母。αβγδεζηθ
11.(反向數(shù)字)編寫一個(gè)程序,提示用戶輸入一個(gè)四位整數(shù),然后顯示顛倒各位數(shù)字后的數(shù)。
主要就是做了兩件事情:
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是字號(hào)
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的經(jīng)緯度需要geopy
順便說下經(jīng)緯度的表示:
一般exif里看到的都是這樣的57°55'56.6",是度,分,秒這么展示的,google上獲取來的是十進(jìn)制的57.9323888888888
所以需要轉(zhuǎn)換一下再寫進(jìn)去
公式: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信息很多,所以找個(gè)真正手機(jī)拍攝的照片當(dāng)模版googlev3=geopy.GoogleV3()place,gps=googlev3.geocode(location)#獲取gps信息,location寫地名,比如‘北京王府井’,偶爾會(huì)被墻,最好掛個(gè)代理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??###?此處為導(dǎo)出包,注意字母大小寫
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)為多數(shù)對象應(yīng)用的基礎(chǔ).
im.thumbnail(size)??###?此處size?為長度為2的tuple類型,改變圖片分辨率
im.save(infile)?###?im.save(dir),圖片處理的最后都用這個(gè),就是保存處理過后的圖片
i+=1
print(i,"Done")
要用pil包 安裝如下:pip?install?pillow
python根據(jù)地址獲取經(jīng)緯度方法一:
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 (僅能精確到城鎮(zhèn),具體街道無結(jié)果返回)
另外還有一種使用高德地圖或百度地圖API的方法,有興趣的朋友可以參考下。
參考鏈接: