此文作为Python基础的第一个笔记是对Python基础语法的一个总括,比较基础,基本所有Python教材的开篇都是讲的这些内容,下面的代码示例都是在Python 2.7环境下的ipython notebook中执行的。文末附带9个本文相关知识点的练习题和参考实现代码,其中具体问题如字符串、列表、函数*等都将在后续的Python笔记中续更。
基础语法规则
# 单行注释
print('单行注释') # 这是单行注释的标识
# \ 代码分隔
print('A fast, distributed, high performance gradient boosting (GBDT, GBRT, GBM or MART) \
framework based on decision tree algorithms, used for ranking, classification and many other \
machine learning tasks. It is under the umbrella of the DMTK(http://github.com/microsoft/dmtk) \
project of Microsoft.')
# \n 文本分隔符
print('A fast, distributed, high performance gradient boosting (GBDT, GBRT, GBM or MART) \n framework based on decision tree algorithms')
#''' 多行文本赋值
multiline = '''
我就是热爱
机器学习
和
数据科学
'''
print(multiline)
#; 多行语句写在一起
myname = 'Mars Xu';wfname='MM Xiao'
# 缩进
title = 'Python'
if title=='Python':
print('人生苦短,我用',title)
else:
print('我用',title)
#: 分隔代码块
def foo(instr):
print(instr)
class c1():
pass
foo('mars xu')
# 空行,pass关键字,为了让程序看起来更加的完整而存在
def foo():
pass
# 模块, import 模块
import random
标识符命名
# 不能用数字和特殊字符开头作为变量名
1i = 'hello' # 错误的
# 驼峰命名法
companyName='MachineLearning'
BIFs自带电池
即Python自带的一些常用函数:
- 查看:dir(builtins)
- IO:print(),open(),input()
- 列表和帮助:dir(),help()
- 类型与身份:type(),id(),memoryview(),isinstance(),issubclass()
- 数学运算类:sum,pow,round,min,max,hash等
- 类型转换:int,bin,hex,oct,str,float,list,bytes等
- 序列:len(),range(),zip(),map(),reduce(),filter(),reversed(),sorted(),enumerate()
Python的标准运算符
# 算数运算符
print('>>>>>>算数运算符')
a=50;b=100
print('a+b=',a+b)
print('a-b=',a-b)
print('a*b=',a*b)
print('a/b=',a/b)
print('a%b=',a%b)
print('a//b=',a//b) # 取整数
print('a**2=',a**2) # 取幂
print('a**0.5=',a**0.5) # 取根
# 比较运算符
print('>>>>>>比较运算符')
print('a==b',a==b)
print('a!=b',a!=b)
print('a>b',a>b)
print('a<b',a<b)
# 逻辑运算符
print('>>>>>>逻辑运算符')
if a>50 and b>60:
print('a and b both bigger than 50')
if a>=50 or b>200:
print('bb')
# 成员运算符
print('>>>>>>成员运算符')
we='marsxu and miaomiao xiao'
print('mars' in we)
print('others' not in we)
# 身份运算符
print('>>>>>>身份运算符')
we='mars'
we1='mars'
print('we1 is we2: ', we in we1)
循环与判断
- for迭代循环
- while条件循环
- 条件循环
- 死循环
- 循环控制
- break
- continue
- pass
# for迭代循环
# range遵循左闭右开的原则-[)
for i in range(5):
print(i)
# while条件循环
i=0
while(i < 15): # 终止条件
print(i)
i += 1 # 注释掉这句之后此while循环就变成一个死循环
# break 终止循环
i=0
while True:
print(i)
i += 1
if i==7: break
# continue 跳过本次循环
for i in range(5):
if i==2: continue
print(i)
# pass 填行,为了使语法看起来更可读,更有条理,其本身没有任何意义
for i in range(5):
if i==2:
pass
##############
else:
print(i)
判断
age=28
# 单 if
if age > 18:
print('you are a adult!')
# if else
if age > 18:
print('you are a adult!')
else:
print('you are a teenage!')
# if elif
l1 = list('china')
print(l1)
for item in l1:
if item=='a':print('-aaa-')
elif item=='i':print('iiii')
elif item=='h':print('>>h')
else:
print(item)
# 三元表达符
# 语法:为真时的结果 if 判定条件 else 为假时的结果
we='mars and mm'
'we' if 'mm' in we else 'not we'
Python标准数据类型
- 不可变类型
- 数值 Number
- int 整型
- float 浮点
- complex 复数
- 字符串 String
- 数值 Number
- 容器类型(可变类型)
- 列表 List
- 元组 Tuple
# 整数类型
a=100;b=200
# 进制表示与转化,Py3不支持加L表示长整型
a=0b0101 # 二进制,bin()
b=0o0101 # 八进制,oct()
c=0x0101 # 十六进制,hex()
# 浮点型
a=5.117
# 科学计数法,-表示小数点往前移
c=5e3
d=7e-4
# 数字正负无穷
float("inf") #正无穷
float("-inf") #负无穷
print(float("-inf")==float("inf"))
# 复数
a=5+22j #定义复数对象
print(type(a))
print(a.real,a.imag)
# 数值类型转换
a=-5.555
print(int(a))
print(float(a))
print(complex(a))
# 绝对值与四舍五入
print(abs(a))
print(round(a,1)) # 第二位表示保留的小数位数
Pyhon 字符串类型
## 初始化及转义
# 单引号或双引号
we='mars & miao'
print(we)
# 转义: \
sentence = 'Today\'s news is not a good news'
print(sentence)
# 字符串属性
len(we) #长度
# 访问
# 1. 循环
for item in we:
print(item)
# 2. 索引, 0 表示第一个元素,-1 表示最后一个元素
print(we[0],we[-1])
# 3. 切片, [::]
print(we[0:4])
print(we[0::2])
# 4. 格式化访问
we='mars & m{}'
m='iao'
we.format(m)
# 拼接
we='maio & '+'mars'
we*3
# 查找与替换 ,返回索引值
we.find('mars')
we.replace('&','2')
# 统计
we.count('m')
# 大小写
we.title()
we.upper()
we.lower()
# 编码与解码
ec = we.encode()
练习题
1、打印出从1到100中所有能被3整除,又能被5整除的数有哪些
for item in range(1,101):
if item%3==0 and item%5==0:
print(item)
2、输入一个字符串,返回满足以下条件的字符串:
- 如果字符串长度大于等于3,添加’ing’到字符串末尾
- 如果字符串是以’ing’结尾的,就在末尾添加’ly’
- 如果字符串长度小于3,返回元字符串
s=input()
if len(s)>3:
print(s+'ing')
elif len(s)<3:
print(s)
else:
print(s+'ly')
3、判断回文
- 输入一个数字,如果是回文数字,返回True,否则返回False
- 回文:如ABBA,正着和反着相等
# 方法1:取字符串逆序 :x[::-1]
x=input()
str_x=str(x)
inverse_x=str_x[::-1]
print(inverse_x==str_x)
# 方法2:for循环 & if...else...
x=str(input())
flag = []
for i in range(len(x)/2):
flag.append(x[i]==x[len(x)-i-1])
print False if False in flag else True
4、输入一个字符串,返回满足以下条件字符串
- 找到字符串中的子串’not’和’bad’
- 如果’bad’出现在’not’后面,就把’not’…’bad’之间包含的所有字符串替换成’good’
# find() & index() & replace()
# 此题有点歧义,题中没有说明若出现多个not和bad时需如何处理
x=raw_input()
not_idx=x.find('not')
bad_idx=x.find('bad')
if not_idx!=-1 and bad_idx!=-1 and not_idx<bad_idx:
print(x.replace(x[not_idx+3:bad_idx],'good'))
5、输入一个字符串,把字符串拆分成两个等分
- 如果字符串长度是偶数,前一半和后一半的长度是相同的
- 如果字符串长度是奇数,则多出的一个字符加到前一半,如’abcde’,前一半是’abc’,后一半是’de’
x=raw_input()
if len(x)%2==0:
a,b=x[0:len(x)/2],x[len(x)/2:]
else:
a,b=x[0:len(x)/2+1],x[len(x)/2+1:]
print('a=',a)
print('b=',b)
6、输入一个字符串返回满足以下条件的字符串
- 找出与字符串的第一个字母相同的字母,把他们替换成’*’,除了第一个字母本身以外
- 例如:输入’babble’,返回’ba**le’
x=raw_input()
first = x[0]
print(first+x[1:].replace(first,'*'))
7、输入一个字符串,返回满足以下条件的字符串
- 由字符串的最前面两个字母和最后两个字母组成的字符串
- 例如: ‘spring’ 返回 ‘spng’, ‘is’ 返回 ‘is’
- 当输入的字符串长度小于2时,返回空字符串
x=raw_input()
if len(x)<2:
res=''
elif len(x)==2:
res=x[0:2]
else:
res=x[0:2]+x[-2:]
print(res)
8、落球计算
一球从100米高度自由落下,假设每次落地后反跳回原高度的一半;再落下,再弹起。请问第6次落地后会弹起多少米?(分别用for和while实现)
h=100
# for循环
for i in range(6):
h=h/2
print(h)
print(h)
# while
h=100
i=0
while(i<6):
h=h/2
i+=1
print(h)
9、创建一个python文件,接收两个参数(均为数字),并找出两个数字间所有的素数(即只能被1和自己整除的数)
x=input()
y=input()
prime=[]
if x<1 or y<1:
print "input number must be > 1"
x,y = [x,y] if x<y else [y,x]
def is_prime(num):
res=True
for x in range(2,num-1):
if num%x==0:
print(num)
res=False
return res
return res
print ([i for i in range(x+1,y) if is_prime(i) and i!=1])