Python重学记录1

写下这个标题觉得可笑,其实本人2014年就自学过一次python,当时看的是中谷教育的milo老师的视频,也跟着写了一些代码,只是因为当时工作上用不到也就淡忘了。不过说实话当时的水平也很低下,本来也没学到个什么。当时看过的书有《和孩子一起学编程》《可爱的python》等

现在由于要学机器学习,重拾python,时过境迁,当时python还是很小众的一门语言,网上的资料也较少,那时候还为到底学2.x还是3.x纠结了半天,在当时的环境下虽然3.x刚出来没多久,但似乎业界用2.x还是主流,第一是因为2.x出来得早,第二是它比较稳定,3.x版本刚出来,还不是很稳定,所以最后学了2.x,4年以后,由于机器学习的兴起,python成为新贵,而3.x也渐渐发展成了主流,于是重学的时候开始看3.x

这几天看的书有

《Python 3程序开发指南第二版》(人民邮电出版社 王弘博 孙传庆 译)

《可爱的Python》

视频有 七月在线 Python基础入门班视频

附上写过的练习程序

题目1 :字符串反转:给定一个英文句子,写一个函数将其中的单词顺序倒过来,翻转时带上标点:

# str=‘i love china!‘str=‘How much wood would a woodchuck chuck if a wood chuck could chuck wood?‘def reverse(string):    list=string.split( )    # print(len(list))    length=len(list)    print(length)    newStr=‘‘    for i in range(length-1,-1,-1):        # j=length-i        print(list[i])        newStr=newStr+list[i]+‘ ‘    return newStr.strip()print(reverse(str))题目2:给定一个整数n,求出0-n之间的所有质数(素数)并打印出来
def isPrimeNumber(num):    result=True    for i in range(2,num):        if(num%i==0):            result=False            break    return (result and num>=2)# print(isPrimeNumber(0))# print(isPrimeNumber(1))# print(isPrimeNumber(2))def getPrimeNumber(num):    list=[]    for i in range(num+1):        if(isPrimeNumber(i)):            list.append(i)    return listprint(getPrimeNumber(10))题目3:利用递归求出斐波那契数列
def fibonacci(n):    if(n<1):        raise ValueError    elif(n==1 or n==2):        return 1    else:        return fibonacci(n-1)+fibonacci(n-2)# print(fibonacci(1))# print(fibonacci(2))# print(fibonacci(3))# print(fibonacci(5))print(fibonacci(10))题目4:汉诺塔问题。给出塔的层数n,让计算机算出每次要移动的步骤:
# s means source原塔所在的柱子(源柱子)# t means target最终将塔所移动到的柱子(目的柱子)# h means helper帮助移动的柱子(缓存柱或中间柱)def hannoi(num,s,t,h):    if(num==1):        print(‘Move‘,num,‘from ‘,s,‘-->‘,t)    else:        hannoi(num-1,s,h,t)        print(‘Move‘,num,‘from ‘,s,‘-->‘,t)        hannoi(num-1,h,t,s)hannoi(7,‘s‘,‘t‘,‘h‘)题目5:用递归程序实现阶乘的运算
def factorial(n):    if(n==1):        return n    else:        return n*factorial(n-1)
print(factorial(10))题目6:自己实现可变参数的函数
def my_print(*args):    print(args)my_print(1,2,4,6,"a",‘b‘,‘c‘)#此处的*args实际上是将多个参数以list的形式传进去的
def multiple_Test(name,**kvs):    print(name)    print(kvs)    print(type(kvs))multiple_Test(‘tom‘,china=‘bj‘,uk=‘london‘,us=‘washington‘)
#此处的**kvs实际上是将多个参数以dict的形式传进去的题目7:自定义排序。给定数组及排序规则(升序或降序),实现冒泡排序
def bubble_Sort(list,order):

for j in range(len(list),0,-1):        for i in range (len(list)-1):            if (order is ‘ascending‘):                judge = list[i]>list[i+1]            elif (order==‘descending‘):                judge = list[i] < list[i + 1]            # print(list[i])            if(judge):                # print(‘original‘,list[i],list[i+1])                temp=list[i]                list[i]=list[i+1]                list[i + 1]=temp                # print(‘now‘, list[i], list[i + 1])    return listtest_List=[11,9,3,5,2,7,10]print(bubble_Sort(test_List,‘descending‘))题目8:求一元二次方程的根,输入系数a,b,c的值,输出方程的根
# coding:utf-8import math as mimport cmath as cmprint(‘Now we are going to calculate the roots of the following equation:\n‘)print(‘ax^2+bx+c=0‘)print(‘Pls input a‘)a=input()print(‘Pls input b‘)b=input()print(‘Pls input c‘)c=input()print(‘Now the equation is:‘)print(a+‘x^2+‘+b+‘x+‘+c+‘=0‘)a=int(a)b=int(b)c=int(c)delta=b**2-4*a*cr=[]if(delta>0):    root1=(-b+m.sqrt(delta))/(2*a)    root2=(-b-m.sqrt(delta))/(2*a)    r.append(root1)    r.append(root2)elif(delta==0):    root=-b/(2*a)    r.append(root)else:    root1 = (-b + cm.sqrt(delta)) / (2 * a)    root2 = (-b - cm.sqrt(delta)) / (2 * a)    r.append(root1)    r.append(root2)print(‘the root(s) of the equation is/are‘,r)注:以上所有程序仅在于验证算法和思想,有些地方不严格,如输入值是否匹配处理时需要的格式没有进行判断。倘若有一天有人从百度上搜到我的博客中来,要参考我的程序的话,请自行加上输入值的异常判断。

细微知识点总结:1、python不同于java,与或非的逻辑判断时一般要用and or not关键字,& |表示按位的与或,而且不能用!表示非2、字符串是否相等,一般用==来判断,这点和java不同,java的字符串如果用==比较的话,比的是内存值,而python中直接用==判断两个字符串是否相等,相当于java里面的equals(),不相等时用a!=b;也可以用operator.eq(a,b)来判断两个字符串是否相等,但是前提是要导入operator包3、非常有用的函数strip()一般来说是去除空格的,也可以去掉首尾不相关的字符串,如:a=‘[email protected]$%^&*(556677‘b=strip(a,‘[email protected]#$%^&*(‘)print(b)#‘556677‘它只能去首尾不能去中间

原文地址:https://www.cnblogs.com/flyingtester/p/10166299.html

时间: 2024-11-05 19:40:27

Python重学记录1的相关文章

Python重学记录2

这几天学的不多,只是看了一下相关的视频.最近看的部分比较难,装饰器没有搞懂,__slots__和property也不太明白(这两个知识点是在公交车上看的视频,因为1.5倍速度放的视频,看得快,不太明白)所以需要进一步巩固.待复习巩固了把相关的学习小结补充上来. 今晚还去健身房锻炼了,特别累,真是在工作的同时要兼顾身体呢,但是锻炼了就没法看书学习了,业余时间就那么多,真是很难平衡啊,羡慕那些年轻人,有那么多时间精力去做事,如果我从20出头就开始天天学习,并坚持一个方向就好了,现在后悔还来不来得及呢

重学计算机组成原理(二)- 制定学习路线,攀登“性能”之巅

0 学习路线的知识点概括 学习计算机组成原理,就是学习计算机是如何协调运行的 计算机组成原理的英文叫Computer Organization Organization 意"组织机构". 该组织机构能够进行各种计算.控制.读取输入,进行输出,达成各种强大的功能. 把整个计算机组成原理的知识点拆分成了四大部分 计算机的基本组成 计算机的指令和计算 处理器设计 存储器和I/O设备. 0.1 计算机的基本组成 计算机的硬件组成 这些硬件,怎么对应到经典的冯·诺依曼体系结构的 除此之外,还需要

重学ps_1

1,选取 打开图片->点击选取工具->ctrl+c->ctrl+n->ctrl+v 2,去除图片背景 打开你要去除背景的图片->在图层面板中->双击图层把图层改为0层->用魔棒点击背景->然后点击delete键->最后将图片存储为png格式 如果存为jpg他会默认添加背景 3,改变图片上文字的颜色 打开要改变的图片->选择快速工具->在你要改变的文字上点击一下->然后在点击油漆桶工具->在选择你想要改变的颜色->然后点击文

重学html

html是描述网页结构的标记语言. 1.html中标记是由尖括号和标记名组成,例如:<h1>,一个元素是指开始标记.闭合标记和他们之间的内容组成,例如:<h1>北京</h1> 2.很多时候,我们用html创建的网页在浏览器中运行的时候,会利用浏览器自带的默认样式来表现结构. 3.css级联样式表,用来描述如何表现内容. <style type="text/css">   <!--type告诉浏览器你所使用的样式的种类--> &

重学线代——声明篇

为啥重学线代呢? 1.当初学得模棱两可,时间长了啥也没剩下 2.越来越发现线代很流弊,很有用(不只是线代,各门数学都有此感触) 3.比较巧合地在网络上发现了个很好的线代教学资源 4.假期浪费了太可惜了 你这堆博客要写点啥呢? 课程笔记.个人领悟.无知吐槽.等等等等 你还想说点啥么? 没了 哦 恩

重学C++ (1)

写在开头的话:这学期没有写太多的代码,终于把中英文两篇论文弄完了,趁着中间的空隙,想想找工作的处境.自己也定了自己的方向.不管学什么语言吧,每个语言都有自己的优势和使用的群体.只要自己是良马,终会有伯乐赏识. 定的标题为“重学C++” 本人之前使用C++基本上用作算法编写,MFC界面的学习编写,集成OpencV进行图像处理的项目开发或者论文实验 总的来说,能处理基本问题.但是远不能达到灵活的地步.所以下载了两本书<effective C++>和<effective STL>我希望能

python的工作记录A

马上进入工作自动化: [[email protected] ~]# cat svn_bbs.py import os,sys,commands,subprocess import re,time svnUrl = "svn://xxx" svnExportCmdPre = "svn export svn://xxx/" sitePath = "/xxx" updateFolder = "/srv/salt/xxx/" salt

C#&amp;java重学笔记(函数)

C#部分  1.写在函数定义的()中的关键字: a.params关键字:用来满足函数的参数为数组时,而数组的长度不固定的情况.且该关键字只能用来修饰数组型参数.这样一修饰,就达成了类似JavaScript函数书写参数的特点. b.ref关键字:让参数按引用传递,类似于C中的传指针参数.比如经典的数值交换函数,你传形参和传指针的结果应该知道,加了ref关键字就相当于传指针.注意:ref只接收变量做参数,你字面量怎么弄指针?而且该变量必须初始化!     c.out关键字:功能和ref一样,区别在于

Java集合类简单总结(重学)

java集合类简介(重学) 一.Collection(集合).Map接口两者应该是平行关系吧. 1.Map介绍 Map是以键值(key-value)对来存放的,2个值.通过key来找到value(例:姓名-电话,通过姓名得到电话),通过Map创建的对象key都 不可以重复. 它的两个常用子类:HashMap类和HashTable类. HashMap类:无序存放的,key不允许重复 HashTable类:无序存放,key不允许重复 key值可通过Map的方法keyset获取全部的key值,返回是个