循环语句的基本用法:
for,while基本框架,+=符号的使用及意义,break及continue的用法
例子:
打印1-20所有的数字(整型)
while的用法
n = 0
while n < 20:
n = n + 1
print(n)
注意点:n的初始值;n的自加
n = 1
while n <= 20:
print(n)
n = n + 1
说明:任何编程语言的执行顺序都是从上到下,从左到右。
for的用法
在shell里的用法
脚本
for i in{1..20};do
echo ${i}
done
命令
seq 1 20
for i in $(seq 1 20);do ——$()相当于``
echo $(i)
done
在python里
range(1,20) ——生成器
for i in range(1,21): ——左闭右开,右边的数字取不到,只有加1,才会取到想要取得值
print(i)
迭代器:对于一个整体来说,比较浪费内存。一次性产生结果,需要再给
生成器:遍历一次给一个,节省内存。在需要的时候才产生结果,依次产生结果。
思考题:
1、求出1-100之间所有的偶数
for i in range(1,101):
if i % 2 == 0:
print(i)
2、求出1-100之间既能被2 整除又能被3整除的数字
for i in range(1,101):
if i % 2 == 0 and i % 3 == 0:
print(i)
3、如何书写一个死循环
while True:
pass
字符串;
声明,基本操作,索引切片,自带方法
string = ‘helloworld’
增加回车 使用三引
正常使用 单引或者双引
string = “this's my house” ——双引包含使用单引
基本操作:在01_
索引切片:
索引:
t h i s 's my house
下角标(索引号) 0 1 2 3 456789....14
负的索引号 -15 -14 -13 ......-1
利用索引打印结果
print(string[7])——字符串名字[索引号]
for i in range(0,15):——可以优化为range(15),默认从0;采用函数len(string),不需要提前知道对象的长度
print(string[i]) ——根据索引打印
len()——求对象的长度
直接打印本身
for element in string:
print(element)——输出单个字符
只要该对象(字符串,可迭代对象)具备编排索引的特性,就可以直接for i in到该对象身上进行索引,打印单个字符。
切片:
利用索引切片出this单词
print(string[0:3])——左闭右开,右边要加1 string[0:4]
引用步长
print(string[0:15:2]) ——2表示步长:step 步长=索引号相减
三种整体输出的形式:
print(string[0:15)——从0索引开始,长度为15
print(string[:])
print(string)
print(string[:4]) ——4表示切片的长度;0-3的索引号
print(string[4:]) ——表示从索引4开始
负的索引号:
负索引和正索引用法没有区别,主要记住负索引和正索引 混合使用的用法
print(string[-8:9])—— -8会翻译成7,所以会变成string[7:9]
字符串中自带的几种方法:
string = “this’s my house”
string.upper() ——字母变大写
string.lower() ——字母变小写
主要用于验证码的比对上
把字符串中特定字符进行替换
string.replace('T','t') ——replace(‘旧字符’,‘新字符’)
string.replace('这','那')
删除首尾空格或特定字符,中间不能删除
string = ‘ this is my house ’
print(len(string))——求长度
string = string.strip() ——删除首尾空格
print(len(string))
删除特定字符
string = ‘this is my housett’
string = string.strip(‘t’)——删除首位及末尾的特定字符
string = ‘ this is my house ttt’
string = string.lstrip()——删除左部空格
string = string.rlstrip(‘t’)——删除右部t
字符串中的截取
string = ‘192.168.75.100 2018/12/31 +0080 15:54:43 /index.php HTTP/1.1 404...'
string = string.split()——默认空格作为分隔符
打印的结果的形式是列表:
[‘192.168.75.100’, ‘2018/12/31’, ‘+0080’, ‘15:54:43’, ‘/index.php’, ‘HTTP/1.1’, ‘404…’]
print(string[0])——这样才会打印出IP地址
字符串的拼接操作
string = ‘wow’ ——w^o^w
print(‘^’.join(string)) ——w^o^w 把^加入到wow中,隔一个加一个
print(string.join(‘^^’)) ——^wow^ 把wow 加入到^^中,如果有两个^,三个^,结果会怎么样?
小米的面题:
有这样一个句子“this is my house”,对该句子进行反转,输出为“house my is this”
思考题:
1、模拟验证码输入并进行比对;
字符串中字符的统计
string = ‘www.baidu.com’
print(string.count(‘w’)) ——统计个数
print(string.index(‘w’)) ——index只会打印第一个的索引号
print(string.index(‘w’,1,len(string))) ——规定起始打印的索引号为1
判断一个字符串是否包含在对应的字符串中?
if ‘www’in string:
print(‘yes’)
else:
print(‘no’)
字符串格式化打印
name, score = ‘tom’, 90
print(“{}’s grade is {}”.format(name, score))——python3才有的
#print(“%s ’s grade is %d” % (name,score)) ——3之前的用法
print(“圆周率保留小数点后四位:{:.4f}”.format(3.141526))—— .4表示小数点后四位;f表示浮点数;有四舍五入
字符串的测试方法
number = input(“请输入:”)
if number.isdigit(): ——判断是不是纯数字;
print(“yes”)
else:
print(“no”)
注意:不能判断浮点数(带.的不可以判断)
word = input(“请输入:”)
if word.isalpha(): ——判断是不是纯字母
print(“yes”)
else:
print(“no”)
注意:只能判断一个单词,不能判断多个单词(带空格的不可以);不能判断含有数字、特殊字符的
space = input(“请输入:”)
if space.isspace(): ——只能判断纯空格
print(“yes”)
else:
print(“no”)
注意:字符串里夹杂空格false
判断一个变量是否是某个类型
string = “hello world”
方法一;
if type(string)== str:
print(string.upper())
else:
pass
方法二;
if isinstance(string,str): ——返回值就是布尔值
print(string.upper())
else:
pass
列表
声明方法,如何遍历,基本操作,变量值交换,算法(冒泡排序,二分查找)
四种数据类型是python的基石;
四种数据结构:
元组(tuple),列表(list),字典(dict),集合(set)
声明list的方式:
方式1、
listA = [18, 3.14, 'string',True]
print(listA,type(listA))
if isinstance(listA,list):
print(‘yse’)
对列表进行遍历
for index in range(len(listA)):
print(listA[index])
切片
print(listA[1:3])——打印的结果还是列表
print(listA[1]) ——单个打印的结果
for element in listA:
print(element)——遍历的结果
方式2、
listB = [i for i in range(1,101)]
第一个i为结果
(列表生成式)
listB = [i for i in range(1,101) if i % 2 == 0]
列表的加法;
listC = [1,2,3,4,True,False]
listD = [5,6,7,'string']
print(listC + listD)
注意:是直接追加
列表的乘法:
print(listC * 20)
注意:是将列表里的内容打印20 次
列表的减法:
listE = [1,2,3,4]
listF = [1,2,3]
print(listE - listF)
listF1 = 1
print(listE - 1)
注意:减法不可用
冒泡排序:
变量值的交换
v1,v2 = ‘hello’,23
v1,v2 = v2 ,v1
print(v1,v2)
listA = [11,12,54,22,56,23,1,45,77]
for i in range(len(listA)):
for j in range(len(listA)-1):
if listA[j] > listA[j+1]:
listA[j],listA[j+1] = listA[j+1],listA[j]
print(listA)
注意:大循环9次,小循环8次,共进行了72次循环
排字典、排IP可以用到
二分查找:前提(排好序)
number = int(input(“请输入:”))
listB = [11,12,14,15,23,37,45,67,78]
start,stop = 0,len(listB)-1 ——首部索引、尾部索引
while stop - start > 0:
middle = (start + stop )//2 ——取整
if number < listB[middle]:
stop = middle - 1
elif number > listB[middle]:
start = middle + 1
else:
print(listB[middle])
break
list的增删改查
listA = [1,2,3]
list增加
listA.append(True) ——把True追加到列表里
listB = [4,5,6]
listA.extend(listB)——把listB整个追加到listA
listA.insert(5,4.5) ——插入;在索引为5的位置上插入4.5
list删除
listA.remove(True) —— 1也能被删除,因为1等价于True;同理0也是
listA.pop(3) —— 利用索引
list清空
listA.clear()
del listA ——删除列表
list的更改
listA[1] = 3.5 ——1是索引,把索引为1 的数字改为3.5
list的查询
n = listA.count(5) ——统计列表中5 的个数
print(n)
stra = “[4,5,6,1,24,5]” ——统计字符串中(“”里的为字符串)字符5的个数
m = stra.count(‘5’)
print(m)
print(listA.index(5,0,len(listA))) ——查询5 的索引号
把列表进行倒序排列
listB = [1,2,3,4,5]
listB.reverser()
print()
列表排序
listC = [12,14,21,6,3,1,22,45,31]
listC.sort()