对菜鸟教程的Python一百例的个别改进

开篇语

好吧,其实是我小妹子Python公选课结课,所以我来帮忙做个大作业(简单到哭的大作业好吗?)!她的大作业就是老师把菜鸟教程的Python一百例扒下来做成文档,然后让学生自己找三个验证下!我们当初是抽选一个内置模块进行翻译以及实现。心塞!一夜大战,我帮她找了三个看起来没那么简单的,然后自己改进了其中两个,估摸着应该能帮她拿个高分,就睡觉了。一夜时间,搞了这点东西,当然要给大伙瞧瞧啦!

那一夜大战的成果

正文

第一题 Python 练习实例37
(PS:原文我就懒得放了,有兴趣的自己去菜鸟教程看传送门
题目:对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
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()

程序结果:实在是漂亮啊

第三题 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()

运行出来的结果是蛮喜人的。好歹也是让我拼到四点的东西。咋都要给力点

结束语

那晚考完,失败,心情不佳,感谢我小妹子安慰我啦。也让我沉迷写码不可自拔了。实在是享受!希望以后也能开开心心写点自己想写的东西,而不是跟现在这样被一些作业考试折磨的头痛啊!!!

小小打个广告,不知道简书准不准。不过我还是打了吧,没关系的。微信公众号搜索“工科狗与生物喵”。这是我跟一个小妹子一起办的一个公众号。里面的内容应该会比简书的更加丰富,而且更加精准。欢迎大伙关注。

posted @ 2017-08-10 18:45  HustWolfzzb  阅读(601)  评论(0编辑  收藏  举报