python学习(1)
字符串
x y z都是字符串
m n k是数字
若字符串中出现" 外用'
若出现' 则外用"
若都有则外用'''
"x"[m:n] m~n
"x"[m:n:k] m~n步长k
"x"[::-1] 反过来
x+y连接xy
x*n 将x复制n次
x in y 如果x是y的子串,返回true
len(x) 字符串长度
str(x) x对用的字符串形式
hex(x)和oct(x) 转为16进制和8进制
字符串处理方法
chr(< unicode码>)-ord( <字符>) 码和字符转换
x.upper() x.lowwer x的升序降序
x.split(“,”) 返回一个列表,将x中原有的","用分割
x.count(y) x中出现y的次数
x.replace(y,z) 将x中y的部分替换成z
x.centre(m,y) 在一个宽度为num的全是y的字符串中间放x
x.join(y)在y中除最后元素每个元素添加一个x
format格式控制


| 形式 | 含义 |
|---|---|
| b | 2进制 |
| d | 十进制 |
| o | 八进制 |
| x | 十六进制 |
| X | 大写十六进制 |
| 形式 | 含义 |
|---|---|
| e | 科学计数e形式 |
| E | 科学计数E形式 |
| f | 浮点数非科学计数形式 |
| % | %形式 |
time库
time.time() 计算机内部时间
time.ctime() 以易读的字符串形式返回
time.gmtime() 计算机可处理形式
import time
t=time.gmtime()
print(time.time())
print(time.ctime())
print(t)
print(t.tm_year)
1522863219.736711
Thu Apr 5 01:33:39 2018
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=4, tm_hour=17, tm_min=33, tm_sec=39, tm_wday=2, tm_yday=94, tm_isdst=0)
2018
时间格式化

t=time.gmtime()
print(time.strftime("%Y-%m-%d %H:%m:%S",t))
2018-04-04 17:04:51
程序计时
- time.perf_counter()
- 第一次调用开始
- 第二次结束
相减得到运行时间
- time.sleep(num)
- 休眠num秒
进度条
单动态刷新
import time
for i in range(6):
print("\r{:1}%".format(i),end="")
time.sleep(0.01)
#因为是在开发环境下所以\r功能被禁用,正常0%-4%会被覆盖
0%
1%
2%
3%
4%
5%

import time
scale=50
for i in range(scale+1):
a = '*'*i
b = '-'*(scale-i)
c = (i/scale)*100
time.sleep(0.2)
print("\r{:^3.0f}% [{}-->{}]".format(c,a,b),end="")

循环控制
几种特殊表达
#m到n步长为k,如1,6,2则i=1,3,5
for i in range(m,n,k)
#每一个字符串做循环
for c in range s: #s为“abc”,c可以用其他代替
print(c,end=",")
输出:a,b,c
#每列表做循环
for item in list #item为[a,b,c],item可以用其他代替
print(item,end=",")
输出:a,b,c
只要是以一个由多个元素组成的数据类型都可以用for-in遍历循环
循环与else
循环和else搭配如果循环是因为break退出的则不会执行else否则执行else
random库
import random
随机种子确定随机序列
种子相同则序列相同,便于程序的复现,若不给种子,直接使用random.random()则使用系统操作时间,不能复现
#使用random.randomm()之前给定种子
>>>random.seed(10)
>>>random.random()
0.7867887
- randint(m,n) #m~n之间的整数
- randrange(m,n[,k]) #[m,n)之间步长为k的整数
- getrandbits(k) #生成一个k比特长度的随机整数
- uniform(a,b) #生成一个[a,b]随机小数
#从seq序列中选择一个元素
random.choice([1,2,3])
#将序列seq重元素随机排列,返回打乱后序列
>>>s=[1,2,3,4,6]
>>>random.shuffle(s)
>>>print(s)
[6,3,2,1,4]
函数
默认参数
和c++一样,可选参数要放在必选参数后面
def add(x,y=1):
return x+y
可变参数
def multi(a,*b,**h):
print('a',a,'b',*b)
for i in range(len(b)):
print(a*b[i])
for first_part,second_part in h.items():
print(first_part,second_part)
multi(10,2,3,jacky=8,kuh=9)
a 10 b 2 3
20
30
jacky 8
kuh 9
返回参数
return a,b,c
-
用元组形式返回多个值
-
用a,b,c=fact(...)方式分别接受
lambda函数
lambad 表达式就是一个函数,可以赋值给一个变量,既然是表达式,可以参与运算
lambda x: x + 2
这个匿名函数的形参是x,表达式x + 2的值就是这个函数的返回值。
>>> f = lambda x: x + 2
>>> f(1)
3
浙公网安备 33010602011771号