写下这个标题觉得可笑,其实本人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'
它只能去首尾不能去中间

最新文章

  1. 前端HTML5几种存储方式的总结
  2. java classpath getResource getResourceAsStream
  3. iOS 判断设备型号
  4. java中的vo 、dto 、dao--转
  5. Ajax 完整教程
  6. linux服务器证书安装指引
  7. Android调试神器stetho使用详解和改造
  8. .Net Core配置文件介绍
  9. python中基本类型的连接组合和互相转换
  10. cacti系列(二)之cacti添加对tomcat服务器的监控
  11. .NET Core 使用 EF 出错的解决方法
  12. LCA在线算法详解
  13. 9.1 UDP协议
  14. 更改GeoServer的端口号
  15. Github好用的Python库使用学习日记
  16. spring中action和url的对应关系
  17. C语言:冒泡排序法:将若干字符串按字母顺序(由小到大)排序输出
  18. CentOS定位、查找文件的命令
  19. Telnet命令相关+DMZ主机+花生壳
  20. Android数据库资料

热门文章

  1. 五十八、SAP中常用预定义数据类型
  2. 四十、SAP中CASE语句用法
  3. 040-PHP使用闭包函数来进行父实例的变量自增,正确示例
  4. 062-PHP函数按值传参,交换数值函数
  5. ZOJ 3795 Grouping 强连通分量-tarjan
  6. SCA-CNN: Spatial and Channel-wise Attention in Convolutional Networks for Image Captioning
  7. Python MongoDB 创建集合
  8. vue-cli 官方脚手架 eslink配置 恢复serve状态下的打印
  9. c++程序—字符型
  10. schema 文件约束