Python基础
Python基础语法
随机数
随机数再现
x= random.getstate()
print(x)
random.randint(1,10)
random.randint(1,10)
random.randint(1,10)
random.randint(1,10)
random.setstate(x)
random.randint(1,10)
random.randint(1,10)
random.randint(1,10)
random.randint(1,10)
数字类型
浮点数
import decimal
a=decimal.Decimal('0.1')
b=decimal.Decimal('0.2')
c=decimal.Decimal('0.3')
if(a+b==c):
print('true')
复数
#复数 复数都是浮点数
x=1+2j
print(x.real)
print(x.imag)
运算
divmod (x,y) 返回(x//y, x%y)
x//y 地板除 3//2=1 -3//2=-2
x%y x除以y的余数
>>>divmod(3,2)
>(1,1)
>>>divmod(-3,2)
>(-2,1)
int(x)将x转换成整数
pow(x,y) x的y次方
>>>pow(2,3)
8
>>>pow(2,3,5)
3
#2 ** 3 % 5
s为字符串
s.isalnum() 所有字符都是数字或者字母,为真返回 Ture,否则返回 False。
s.isalpha() 所有字符都是字母,为真返回 Ture,否则返回 False。
s.isdigit() 所有字符都是数字,为真返回 Ture,否则返回 False。
s.islower() 所有字符都是小写,为真返回 Ture,否则返回 False。
s.isupper() 所有字符都是大写,为真返回 Ture,否则返回 False。
s.istitle() 所有单词都是首字母大写,为真返回 Ture,否则返回 False。
s.isspace() 所有字符都是空白字符,为真返回 Ture,否则返回 False。
四舍五入
5.4 “四舍五入”结果为:5,int(5.4+0.5) == 5
5.6 “四舍五入”结果为:6,int(5.6+0.5) == 6
短路原则和运算符优先级
短路原则
>>> 3 and 4
4
>>> 3 or 4
3
>>> 0 and 3
0
>>> 0 or 4
4
>>> (not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
4
>>> False or 0 or 4 or 6 or 9
4
运算符优先级
数字越大优先级越高
>>>not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
4
分支和循环
条件表达式:
条件成立时执行的语句 if condition else 条件不成立时执行的语句
break和continue都只作用于一个循环体
break跳出循环,还有未执行的语句也会跳出
while True:
answer=input("可以退出循环吗")
if answer=="可以":
break
print("唉 好累")
可以退出循环吗不可以
唉 好累
可以退出循环吗不能
唉 好累
可以退出循环吗可以
continue跳出本轮循环,回到循环的开头
for i in range(10):
if i%2 != 0:
print(i)
continue
i+=2
print(i)
输出:
2
1
4
3
6
5
8
7
10
9
上例:i是偶数就+2输出,i是奇数就直接输出
-
列表
添加元素
append添加一个元素
extend添加一个列表
insert在指定位置插入 (计数从0开始)
mix = [1,'xiaodong',3,[2,4]]
>>> mix
[1, 'xiaodong', 3, [2, 4]]
>>> mix.append('hello')
>>> mix
[1, 'xiaodong', 3, [2, 4], 'hello']
>>> len(mix)
5
>>> mix.extend(['ye','boy'])
>>> mix
[1, 'xiaodong', 3, [2, 4], 'hello', 'ye', 'boy']
>>> mix.insert(0,'jia')
>>> mix
['jia', 1, 'xiaodong', 3, [2, 4], 'hello', 'ye', 'boy
删除元素
remove删除元素
member.remove(‘a’)
del member[i]
pop
member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
>>> member.pop()
88
>>> member
['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳']
member.pop(0)
'小甲鱼'
>>> member
[88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳']
替换元素
>>> list1 = [1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]
>>> list1[1][2][0]='小鱿鱼'
>>> list1
[1, [1, 2, ['小鱿鱼']], 3, 5, 8, 13, 18]
列表切片
得到的是原列表的拷贝
>>> member
[88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳']
>>> member[1:4]
['黑夜', 90, '迷途']
>>> member
[88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳']
>>> member[:3]
[88, '黑夜', 90]
>>> member[1:]
['黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳']
补充
拷贝列表用分片方式
分片拷贝和直接拷贝的区别:
>>> list11=[1,3,2,9,7,8]
>>> list12=list11[:]
>>> list13=list11
>>> list12
[1, 3, 2, 9, 7, 8]
>>> list13
[1, 3, 2, 9, 7, 8]
>>> list11.sort()
>>> list11
[1, 2, 3, 7, 8, 9]
>>> list12
[1, 3, 2, 9, 7, 8]
>>> list13
[1, 2, 3, 7, 8, 9]
列表推导式
[有关A的表达式 for A in B]
>>> list1 = [x**2 for x in range(10)]
>>> list1
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
列表操作符
list.sort() 排序
list.count() 计数
list.index() 索引 返回查找元素的位置
list.clear() 请空列表元素 清空后列表仍然存在
元组
元组内的元素不可更改
元组的标志 ,eg:temp=(1,)
>>> 8*(8)
64
>>> 8*(8,)
(8, 8, 8, 8, 8, 8, 8, 8)
元组中添加元素的方法
>>> temp=('a','b','c','d')
>>> temp=temp[:2]+('e',)+temp[2:]
>>> temp
('a', 'b', 'e', 'c', 'd')
字符串
capitalize 将首字母改为大写
>>> str2='xiaoxie'
>>> str2.capitalize()
'Xiaoxie'
casefold 将所有字母改为小写
>>> str2='DAXIExiaoxie'
>>> str2.casefold()
'daxiexiaoxie'
center(width) 将字符居中,并用空格填充至长度width的新字符串
>>> str2.center(40)
' DAXIExiaoxie '
count(sub[,start[,end]]) 返回sub在字符串里出现的次数,start和end参数表示范围,可选
endswith(sub[,start[,end]]) 检测字符串是否以sub字符串结束,是的话返回True,不是返回False
expandtabs([tabsize=8]) 把字符串中的tab符号(\t)转换为空格,如不指定参数,默认参数是tabsize=8
str.isalnum() 所有字符都是数字或者字母
str.isalpha() 所有字符都是字母
str.isdigit() 所有字符都是数字,如果带小数点,则会返回False
格式化
0,1,2是位置参数
a,b,c是关键字参数
>>> "{0} love {1}.{2}".format("I","FishC","com")
'I love FishC.com'
>>> "{a} love {b}.{c}".format(a="I",b="FishC",c="com")
'I love FishC.com'
%c 格式化字符及ASCII码
%s 格式化字符串
%d 格式化整数
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%f 格式化定点数,可指定精度
%e 科学计数法格式化定点数
%g 根据值的大小决定使用%f或%e
>>> '{0:.1f}{1}'.format(27.658,'GB')
'27.7GB'
>>>"{0}{1:.2f}".format('Pi = ', 3.1415)
'Pi = 3.14'
>>> '%c' % 97
'a'
>>> '%d+%d=%d'% (4,5,4+5)
'4+5=9'
>>> '%o'%10
'12'
>>> '%f'%27.658
'27.658000'
>>> '%e'%27.658
'2.765800e+01'
格式化操作符辅助命令
m.n m是显示的最小总宽度,n是小数点后的位数
- 用于左对齐
>>> '%5.1f'%27.658
' 27.7'
>>> '%.2e'%27.658
'2.77e+01'
>>> '%10d'%5
' 5'
>>> '%-10d'%5
'5 '
>>>
字符串转义字符
’ 单引号
" 双引号
\n 换行符
\t 制表符
序列
list 把可迭代对象转换为列表
>>> b="I love FishC.com"
>>> b=list(b)
>>> b
['I', ' ', 'l', 'o', 'v', 'e', ' ', 'F', 'i', 's', 'h', 'C', '.', 'c', 'o', 'm']
tuple([iterable]) 把一个可迭代对象转换为元组
str(obj)把obj对象转换为字符串
len(sub) 返回sub的长度
max() 返回序列或者参数里的最大值
min() 返回序列或者参数里的最小值
sum(iterable[, start=0]) 返回序列iterable和可选参数start的总和
sorted 排序
reversed
enumerate
zip
>>> numbers=[2,4,98,50]
>>> sorted(numbers)
[2, 4, 50, 98]
>>> reversed(numbers)
<list_reverseiterator object at 0x0000020D3AB69708>
>>> list(reversed(numbers))
[50, 98, 4, 2]
>>> enumerate(numbers)
<enumerate object at 0x0000020D3AB65368>
>>> list(enumerate(numbers))
[(0, 2), (1, 4), (2, 98), (3, 50)]
>>> a=[1,2,3,4,5,6,7,8]
>>> b=[4,5,6,7,8]
>>> zip(a,b)
<zip object at 0x0000020D3AB74248>
>>> list(zip(a,b))
[(1, 4), (2, 5), (3, 6), (4, 7), (5, 8)]
所谓迭代,是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。