好吧,其实是小妹子Python公选课结课,所以我来帮忙做个大作业(简单到哭的大作业好吗?)!她的大作业就是老师把菜鸟教程的Python一百例扒下来做成文档,然后让学生自己找三个验证下!我们当初是抽选一个内置模块进行翻译以及实现。心塞!一夜大战,我帮她找了三个看起来没那么简单的,然后自己改进了其中两个,估摸着应该能帮她拿个高分,就睡觉了。一夜时间,搞了这点东西,当然要给大伙瞧瞧啦!
第一题 :Python 练习实例37
(PS:原文我就懒得放了,有兴趣的自己去菜鸟教程看python模块就有了)
题目:对10个数进行排序。
程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。
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("来,把你的十个数字输进来(请别输入重复的:)\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()
感想:原来的例子用的貌似是挨个按照递增的形式找出排序,然后对号入座,貌似很强啊!但是我这个也不错的样子(我记得算法导论里边有我这种的样子?不过这个真的是我灵机一动想出来的),定两个数组,一个放置原序列,然后每一个跟所有的数字比较,根据它大于的数字N,直接把这个数字赋给第二个正确排序后的数组中对应的N位的元素。这样下来就排的稳稳当当了。不过貌似如果做优化的话,我这个肯定被按在地上摩擦。幸而,这里可以安安静静的献丑!开心~~~
第二题:Python 练习实例65
题目:一个最优美的图案。
程序分析:无。(纯粹的画图,因为这个图太好看了。所以没舍得改,就这样吧,只是从2.x 到 3.x 貌似还有点bug要处理下,所幸不难!)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import math
from Tkinter import *
class PTS:
def __init__(self):
self.x = 0
self.y = 0points = []
def LineToDemo():
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()
程序结果:实在是漂亮啊
第三题 :Python 练习实例82
题目:八进制转换为十进制
程序分析:无。
个人感觉菜鸟教程的这个示例有点问题,因为我运行不出来啊。而且感觉进制转换有结果也是失败了,哪位装了2.x的麻烦跑跑下面的原码,我没装所以只是转成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
既然跑不出结果,但是我小妹子的作业要做完啊。所以我就自己出题自己写咯。本来是想做个十进制转换到任何进制的。结果发现超过十进制的好蛋疼啊。所以就偷懒了做了十进制以下的转换了。万幸能用:
def TenToN():
n=int(input("输入你想转到的进制吧!\n"))
x=int(input("输入你要转换的十进制,下面交给我吧!"))
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是退出,其他是进行运算')
TenToN()
main()
运行出来的结果是蛮喜人的。好歹也是让我拼到四点的东西。咋都要给力点。