写下这个标题觉得可笑,其实本人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 list
print(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 list
test_List=[11,9,3,5,2,7,10]
print(bubble_Sort(test_List,'descending'))
题目8:求一元二次方程的根,输入系数a,b,c的值,输出方程的根
 # coding:utf-8
import math as m
import cmath as cm
print('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*c
r=[]
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='!@$%^&*(556677'
b=strip(a,'!@#$%^&*(')
print(b)
#'556677'
它只能去首尾不能去中间

Python重学记录1的更多相关文章

  1. Python重学记录2

    这几天学的不多,只是看了一下相关的视频.最近看的部分比较难,装饰器没有搞懂,__slots__和property也不太明白(这两个知识点是在公交车上看的视频,因为1.5倍速度放的视频,看得快,不太明白 ...

  2. C++关键字:重学记录

    const_cast dynamic_cast explicit

  3. python 重学

    -------------------------

  4. 推翻自己和过往,重学自定义View

    http://blog.csdn.net/lfdfhl/article/details/51671038 深入探讨Android异步精髓Handler 站在源码的肩膀上全解Scroller工作机制 A ...

  5. Python爬虫个人记录(二) 获取fishc 课件下载链接

    参考: Python爬虫个人记录(一)豆瓣250 (2017.9.6更新,通过cookie模拟登陆方法,已成功实现下载文件功能!!) 一.目的分析 获取http://bbs.fishc.com/for ...

  6. 打算写一个《重学Node.js》系列,希望大家多多支持

    先放上链接吧,项目已经开始2周了:https://github.com/hellozhangran/happy-egg-server 想法 现在是2019年11月24日,还有人要开始学习Node.js ...

  7. 重学 Java 设计模式:实战责任链模式「模拟618电商大促期间,项目上线流程多级负责人审批场景」

    作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 场地和场景的重要性 射击

  8. 重学 Java 设计模式:实战备忘录模式「模拟互联网系统上线过程中,配置文件回滚场景」

    作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 实现不了是研发的借口? 实现不了,有时候是功能复杂度较高难以实 ...

  9. 重学 Java 设计模式:实战状态模式「模拟系统营销活动,状态流程审核发布上线场景」

    作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! @ 目录 一.前言 二.开发环境 三.状态模式介绍 四.案例场景模拟 1 ...

随机推荐

  1. request.getParameter() 接收参数中文乱码

    修改tomcat配置文件 设置url编码集 <Connector port="8080" protocol="HTTP/1.1" connectionTi ...

  2. mysql第六篇 : MySQL索引原理与慢查询优化

    浏览目录 一.索引介绍 二.索引方法 三.索引类型 四.聚合索引和辅助索引 五.测试索引 六.正确使用索引 七.组合索引 八.注意事项 九.查询计划 十.慢日志查询 十一.大数据量分页优化 一.索引介 ...

  3. React全局浮窗、对话框

    下面代码是组件源码: import React, {Component} from 'react' import {createPortal} from 'react-dom' import styl ...

  4. 2016蓝桥杯决赛C/C++A组第三题 打靶

    题意: 小明参加X星球的打靶比赛.比赛使用电子感应计分系统.其中有一局,小明得了96分. 这局小明共打了6发子弹,没有脱靶.但望远镜看过去,只有3个弹孔.显然,有些子弹准确地穿过了前边的弹孔. 不同环 ...

  5. 读书笔记 - js高级程序设计 - 第十五章 使用Canvas绘图

    读书笔记 - js高级程序设计 - 第十三章 事件   canvas 具备绘图能力的2D上下文 及文本API 很多浏览器对WebGL的3D上下文支持还不够好   有时候即使浏览器支持,操作系统如果缺缺 ...

  6. python 奇淫技巧之自动登录 哔哩哔哩

    前言 嘿,各位小伙伴好呀,今天要带来点什么干货呢,就从我的实际开发中来给大家带来一个案例吧,如何自动登录 哔哩哔哩 接到老大通知,让我自动写一个自动登录 哔哩哔哩 的脚本,我当然是二话不说直接开怼,咱 ...

  7. 第二届中国“AI+”创新创业大赛完美收官,京东云赛道硕果累累

    聚焦南京产业发展核心诉求,京东云携手南京政府构建的"平台+生态+赋能"的产业体系,搭建产业创新云平台,以人工智能产业创新链要素补齐为核心,围绕"研.产.供.销.服&quo ...

  8. Linux笔记01

    linux目录结构 : linux只有一个目录. usr:等价于programfiles: etc:存放系统配置 root:管理员(超级用户)目录, home:存放其他用户的目录: lib:共享包: ...

  9. 使用H5搭建webapp主页面

    使用H5搭建webapp主页面 前言: 在一个h5和微信小程序火热的时代,作为安卓程序员也得涉略一下h5了,不然就要落后了,据说在简历上可以加分哦,如果没有html和css和js基础的朋友,可以自行先 ...

  10. GTK入门

    环境准备 官网下载 GTK 源码包,因为本机 GLib 版本不够,下载一个非最新版的 GTK3.8.0 先学习用 直接阅读 "/gtk+-3.8.0/docs/reference/gtk/h ...