開篇語
好吧,其實(shí)是我小妹子Python公選課結(jié)課嫌松,所以我來幫忙做個(gè)大作業(yè)(簡單到哭的大作業(yè)好嗎沪曙?)!她的大作業(yè)就是老師把菜鳥教程的Python一百例扒下來做成文檔豆瘫,然后讓學(xué)生自己找三個(gè)驗(yàn)證下珊蟀!我們當(dāng)初是抽選一個(gè)內(nèi)置模塊進(jìn)行翻譯以及實(shí)現(xiàn)。心塞外驱!一夜大戰(zhàn)育灸,我?guī)退伊巳齻€(gè)看起來沒那么簡單的,然后自己改進(jìn)了其中兩個(gè)昵宇,估摸著應(yīng)該能幫她拿個(gè)高分磅崭,就睡覺了。一夜時(shí)間瓦哎,搞了這點(diǎn)東西砸喻,當(dāng)然要給大伙瞧瞧啦!
正文
第一題 Python 練習(xí)實(shí)例37
(PS:原文我就懶得放了蒋譬,有興趣的自己去菜鳥教程看傳送門)
題目:對10個(gè)數(shù)進(jìn)行排序割岛。
程序分析:可以利用選擇法,即從后9個(gè)比較過程中犯助,選擇一個(gè)最小的與第一個(gè)元素交換癣漆,下次類推,即用第二個(gè)元素與后8個(gè)進(jìn)行比較剂买,并進(jìn)行交換惠爽。
def main():
a=[]
b=[0,0,0,0,0,0,0,0,0,0]
N=0
for i in range(10):
print(a.append(int(input("來,把你的十個(gè)數(shù)字輸進(jìn)來(請別輸入重復(fù)的:)\n"))))
for i in range(10):
for j in range(10):
if a[i]>a[j]:
N=N+1
b[N]=a[i]
N=0
print(a)
print('\n')
print(b)
main()
感想:原來的例子用的貌似是挨個(gè)按照遞增的形式找出排序瞬哼,然后對號入座婚肆,貌似很強(qiáng)啊坐慰!但是我這個(gè)也不錯(cuò)的樣子(我記得算法導(dǎo)論里邊有我這種的樣子较性?不過這個(gè)真的是我靈機(jī)一動想出來的),定兩個(gè)數(shù)組结胀,一個(gè)放置原序列两残,然后每一個(gè)跟所有的數(shù)字比較,根據(jù)它大于的數(shù)字N把跨,直接把這個(gè)數(shù)字賦給第二個(gè)正確排序后的數(shù)組中對應(yīng)的N位的元素。這樣下來就排的穩(wěn)穩(wěn)當(dāng)當(dāng)了沼死。不過貌似如果做優(yōu)化的話着逐,我這個(gè)肯定被按在地上摩擦。幸而,這里可以安安靜靜的獻(xiàn)丑耸别!開心~~~
第二題Python 練習(xí)實(shí)例65 題目:一個(gè)最優(yōu)美的圖案健芭。
程序分析:無。(純粹的畫圖秀姐,因?yàn)檫@個(gè)圖太好看了慈迈。所以沒舍得改,就這樣吧省有,只是從2.x 到 3.x 貌似還有點(diǎn)bug要處理下痒留,所幸不難!)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import math
class PTS:
def __init__(self):
self.x = 0
self.y = 0
points = []
def LineToDemo():
from Tkinter import *
screenx = 400
screeny = 400
canvas = Canvas(width = screenx,height = screeny,bg = 'white')
AspectRatio = 0.85
MAXPTS = 15
h = screeny
w = screenx
xcenter = w / 2
ycenter = h / 2
radius = (h - 30) / (AspectRatio * 2) - 20
step = 360 / MAXPTS
angle = 0.0
for i in range(MAXPTS):
rads = angle * math.pi / 180.0
p = PTS()
p.x = xcenter + int(math.cos(rads) * radius)
p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)
angle += step
points.append(p)
canvas.create_oval(xcenter - radius,ycenter - radius,
xcenter + radius,ycenter + radius)
for i in range(MAXPTS):
for j in range(i,MAXPTS):
canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)
canvas.pack()
mainloop()
if __name__ == '__main__':
LineToDemo()
程序結(jié)果:實(shí)在是漂亮啊
第三題 Python 練習(xí)實(shí)例82 題目:八進(jìn)制轉(zhuǎn)換為十進(jìn)制
程序分析:無蠢沿。
個(gè)人感覺菜鳥教程的這個(gè)示例有點(diǎn)問題伸头,因?yàn)槲疫\(yùn)行不出來啊。而且感覺進(jìn)制轉(zhuǎn)換有結(jié)果也是失敗了舷蟀,哪位裝了2.x的麻煩跑跑下面的原碼恤磷,我沒裝所以只是轉(zhuǎn)成3.x 不知是不是不兼容:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
if __name__ == '__main__':
n = 0
p = raw_input('input a octal number:\n')
for i in range(len(p)):
n = n * 8 + ord(p[i]) - ord('0')
print n
既然跑不出結(jié)果,但是我小妹子的作業(yè)要做完啊野宜。所以我就自己出題自己寫咯扫步。本來是想做個(gè)十進(jìn)制轉(zhuǎn)換到任何進(jìn)制的。結(jié)果發(fā)現(xiàn)超過十進(jìn)制的好蛋疼啊匈子。所以就偷懶了做了十進(jìn)制以下的轉(zhuǎn)換了河胎。萬幸能用:
def TenToN():
n=int(input("輸入你想轉(zhuǎn)到的進(jìn)制吧!\n"))
x=int(input("輸入你要轉(zhuǎn)換的十進(jìn)制旬牲,下面交給我吧仿粹!"))
a=[]
b=0
Xn=0
if n<=10:
while int(x/n)!=0:
a.append(x%n)
x=int(x/n)
a.append(x%n)
b=len(a)
for i in range(b):
Xn=Xn+a[b-1-i]*pow(10,b-1-i)
print(Xn)
def main():
T=1
while(T):
T=input('告訴我你要干嘛?0是退出原茅,其他是進(jìn)行運(yùn)算')
TenToN()
main()
運(yùn)行出來的結(jié)果是蠻喜人的吭历。好歹也是讓我拼到四點(diǎn)的東西。咋都要給力點(diǎn)
結(jié)束語
那晚考完擂橘,失敗晌区,心情不佳,感謝我小妹子安慰我啦通贞。也讓我沉迷寫碼不可自拔了朗若。實(shí)在是享受!希望以后也能開開心心寫點(diǎn)自己想寫的東西昌罩,而不是跟現(xiàn)在這樣被一些作業(yè)考試折磨的頭痛翱扌浮!>ビ谩遣总!
小小打個(gè)廣告睬罗,不知道簡書準(zhǔn)不準(zhǔn)。不過我還是打了吧旭斥,沒關(guān)系的容达。微信公眾號搜索“工科狗與生物喵”。這是我跟一個(gè)小妹子一起辦的一個(gè)公眾號垂券。里面的內(nèi)容應(yīng)該會比簡書的更加豐富花盐,而且更加精準(zhǔn)。歡迎大伙關(guān)注菇爪。