zoukankan      html  css  js  c++  java
  • python3练习100题——005

     继续做题~答案都会经过py3测试
    原题网址:http://www.runoob.com/python/python-exercise-example5.html

    题目:输入三个整数x,y,z,请把这三个数由小到大输出。

    我的代码:

    l=[]
    for i in range(3):
        x=int(input("please input a number:"))
        l.append(x)
    l.sort()
    print(l)

    思考:利用了可以对列表进行排序的sort函数,如果不能用呢?——在题目下面的答案中看到了冒泡排序法,而且应该考虑针对多个整数排序。当年学C语言的时候也有学过,感觉有点绕又忘啦~还是应该再学习下!以下代码来自原题下面的评论:

    1. 首先 定义一个对list中的int冒泡比对的函数:
      def Sort(list):
          n = len(list)
          for i in range(1, n):                         #i可以取的值是[1,n-1] 冒泡法比较的循环就是要少一次,最后最小那个不用比就出来了
              for j in range(1, n - i + 1):             #取1为下限,保证j-1位,最开始从0位开始比   取n-i+1为上限,保证j能够取到n-i位
                  if list[j - 1] > list[j]:             #从前到后的比较:最先确定最后的值
                      list[j - 1], list[j] = list[j], list[j - 1]
                  print(list)
          for i in range(0, n):
              print(list[i])

      要用到两个循环,第一个是规定比对到的位数,一次循环从最末尾确定一位最大值,第二个用来两两比对。 循环到上下限有点难确定。

    2. 定义一个读入函数:
      def inputData():
          list_first = []
          while True:
              a = input("please input num:".strip())     #strip()去除输入字符前后的空格
              if len(a) == 0:                            #空白时停止读入的循环
                  return list_first
              else:
                  list_first.append(int(a))
    3. 让函数直接被调用:
      if __name__ == '__main__':         
          lt = inputData()
          print("the list is:",lt)
          Sort(lt)

      用这个if语句,让这个py文件直接使用的时候,函数直接被调用;也可以作为模块中的函数被引入到别的py文件。

    分析很规范的答案~学到了冒泡排序算法的思想,也更加了解了写py文件的格式:比如如何定义函数,运行文件的时候直接调用

    关于冒泡排序法,根据上面的改写了一个由前向后确定由小到大数字的方式:

    def sort(list):
        n=len(list)
        for i in range(0,n-1):               #上下限差值n-1
            for j in range(i,n-1)[::-1]:   #第一次循环上下限差值n-1
                if list[j+1]<list[j]:
                    list[j+1],list[j] = list[j],list[j+1]
                print(list)
        for x in range(0,n):
            print(list[x])

    发现循环的上下标、比较的方向都不是最重要的,重要的是掌握思想:对于n个元素,比较n-1轮(第一个循环);第一轮比较n-1次,每轮-1,直到减少到1次(第二个循环)。

  • 相关阅读:
    [转]对Lucene PhraseQuery的slop的理解
    Best jQuery Plugins of 2010
    15 jQuery Plugins To Create A User Friendly Tooltip
    Lucene:基于Java的全文检索引擎简介
    9 Powerful jQuery File Upload Plugins
    Coding Best Practices Using DateTime in the .NET Framework
    Best Image Croppers ready to use for web developers
    28 jQuery Zoom Plugins Creating Stunning Image Effect
    VS2005 + VSS2005 实现团队开发、源代码管理、版本控制(转)
    禁止状态栏显示超链
  • 原文地址:https://www.cnblogs.com/drifter/p/9083197.html
Copyright © 2011-2022 走看看