前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对菜鸟教程的Python一百例的个别改进

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

作者头像
用户1687088
发布2018-05-07 16:33:06
1.2K0
发布2018-05-07 16:33:06
举报

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

第一题 :Python 练习实例37

(PS:原文我就懒得放了,有兴趣的自己去菜鸟教程看python模块就有了)

题目:对10个数进行排序。

程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。

代码语言:javascript
复制
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要处理下,所幸不难!)

代码语言:javascript
复制
#!/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 不知是不是不兼容:

代码语言:javascript
复制
#!/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

既然跑不出结果,但是我小妹子的作业要做完啊。所以我就自己出题自己写咯。本来是想做个十进制转换到任何进制的。结果发现超过十进制的好蛋疼啊。所以就偷懒了做了十进制以下的转换了。万幸能用:

代码语言:javascript
复制
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()

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 工科狗和生物喵 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档