字符串切换
py_str = 'python'
print(len(py_str)) # 字符串长度
py_str[0] 取出第一个字符,[ ] 中的 数字成为索引,或下标。
py_str[len(py_str) - 1] # py_str[5],取最后的一项
py_str[-1] #最后一项的下标是 -1
py_str[-len(py_str)] #最左一项的是-6
py_str[2:4] # 切片,2对应t包含,4对应的o不包含,所以结果为th
py_str[2:] # 结尾不写,表示到取到结尾的部分
py_str[0:2] # py
py_str[:2] # py
py_str[:] #python
py_str[: : 2] #2表示的步长值 ,pto
py_str[: : -1] #步长值为负,表示从右往左进行取值
alist = ['bob','alice',10,20,[1,2,4,44]]
print(len(alist)) # 5
print(alist[:2]) #['bob', 'alice']
'bob' in alist # true
alist1=['tom'] + alist
print(alist1) # ['tom', 'bob', 'alice', 10, 20, [1, 2, 4, 44]]
alist.append(100) #['bob', 'alice', 10, 20, [1, 2, 4, 44], 100] 尾部追加
字典
-
字典是由键-值(key-value)对构成的映射数据类型
IF 判断条件
任何可以把数据类型当成判断的条件
任何值为0的数字都是False,否则是True
任何非空对象都是True,否则是False
if 0.1:
print('yes') #yes
if ' ':
print('yes') #yes
if '':
print('yes') #null
if '0.0':
print('yes') #null
- 石头剪刀布的游戏
import random
all_choice = ['石头','剪刀','布']
computer = random.choice(all_choice)
# player = input('请出拳(石头/剪刀/布):')
prompt = '''
(0) 石头
(1) 剪刀
(2) 布
请选择(0/1/2/)'''
ind = int(input(prompt))
player = all_choice[ind]
winlist = (['石头','剪刀'],['剪刀','布'],['布','石头'])
if player == computer:
print('平局')
elif [computer,player] in winlist:
print('\033[32;1myou win\033[0m')
else:
print('\033[32;1myou lost\033[0m')
print('你出了:%s,计算机出的是:%s' %(player,computer))
- While 判断条件
当语句不断的重复执行的时候需要用到while循环
语句会不断的被执行,直到表达式的值为0或者是False才可以停止
result = 0
counter = 1
while counter< 101:
result += counter
counter += 1
print(result)
-----------------------------------
while True:
yn = input('continue(y/n)')
if yn in ['n','N']:
break
print('running.....')
- 猜数字的大小
import random
result = random.randint(1,10)
counter = 0
while True:
answer = int(input('请输入你的值:'))
if answer > result:
print("猜大了")
elif answer < result:
print("猜小了")
else:
print("猜对了")
break
counter +=1
print(result)
print(answer)
-----------------------------------
import random
result = random.randint(1,100)
running = True
while running:
answer = int(input("guess the number:"))
if answer > result:
print('猜大了,请从新猜测')
if answer < result:
print('猜小了,请继续猜')
if answer == result:
print('猜对了')
running = False
print(result)
-------------------------------------
import random
result = random.randint(1,10)
counter = 0
while counter<3:
answer = int(input('请输入你的值:'))
if answer > result:
print("猜大了")
elif answer < result:
print("猜小了")
else:
print("猜对了")
break
counter +=1
else:
print(result)
For 循环条件
- python 中的for接收可迭代对象(例如序列或迭代器)作为其参数,每次迭代其中一个元素
- 与 while 循环一样,支持break,continue,else语句
- 一般情况下,循环次数未知采用,while循环,循环次数已知,采用for循环。
astr = 'abc'
alist = ['bob','alice']
atuple = (10,20,30)
adict = {'name':'NI(⊙o⊙)文亮','age':28}
for c in astr:
print(c) # a b c
for name in alist:
print(name) # bob alice
for i in atuple:
print(i) # 10,20,30
for key in adict:
print('%s:%s' % (key,adict[key])) # name : 文亮 age:28
- Range函数
for循环常与range函数一起使用
range函数提供循环条件
range函数的完整语法为:range(start,end,step = 1 )
print(list(range(10))) # 10是结束位置,但不包含10,[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(range(0,2))) # [0,1]
print(list(range(1,10,2))) # [1, 3, 5, 7, 9]
print(list(range(10,0,-1))) # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
print([3 + i for i in range(10)]) #[3, 4, 5, 6, 7, 8, 9, 10, 11, 12] #循环控制3+i运行多少次
[3+2 for i in range(10)] # 执行10次3+2
[3+i for i in range(10) if i %2 == 1] # 判断条件作为过滤依据
['192.168.1.%s' % i for i in range(1,255)]
- 斐波那契数列
1 2 3 5 8 13 21
fib = [0,1]
l = int(input('length:'))
for i in range(l - len(fib)):
fib.append(fib[-1]+fib[-2])
- 九九乘法表
\t :代表着四个空格也就是一个tab
\n:代表着换行
for i in range(3): #外层循环控制行
for j in range(i+1): #内层控制某一行
print('hello', end=' ')
print()
for i in range(1,10):
for j in range(1,i+1):
print('%s * %s=%s ' %(j,i,j * i),end=' ')
print()
# print默认是打印一行,结尾加换行。end=' '意思是末尾不换行,加空格
for i in range(1, 10):
for j in range(1, i + 1):
print('{}x{}={}\t'.format(j, i, i * j), end='' )
print('\n')
for i in range(1, 10):
for j in range(1, i + 1):
print(f'{i}x{j}={i*j}', end='\t' )
print(end='\n')
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
文件对象访问模式
- 打开文件
fobj = open('/tmp/mima','w')
fobj.write('hello world!\n')#写数据时,先放在缓冲区
#当数据量达到一定程度时,自动写入磁盘
fobj.flush() #立即将数据同步至磁盘
fobj.close() #关闭文件时,数据自动写入磁盘
with open('/tmp/mima') as fobj:
print(fobj,readline())
fobj = open('/tmp/mima','rb')#非文本文件要加上b,文件文件也可以b
fobj.tell() #返回指针的位置
a = sys.stdin.readline() # 读取键盘输入,回车也作为一个字符\n读入
print(a)
复制函数(传参)
利用函数来拷贝相关的两个文件的信息等
import sys
def copy(src_fname,dst_fname):
src_fobj = open(src_fname,'rb')
dst_fobj = open(dst_fname,'wb')
while True:
data = src_fobj.read(4096)
if not data:
break
dst_fobj.write(data)
src_fobj.close()
dst_fobj.close()
copy(sys.argv[1],sys.argv[2])
[root@192 python]# python cp_func.py tmp.123456 tmp.123
- 默认参数
*默认参数就是声明了默认值的参数
因为给参数赋予了默认值,所以在函数调用时,不向该参数传入值也是允许的
def pstar(num =30):
print("*" * num)
if __name__ == '__main__':
pstar()
网友评论