02_python_循环、字符串、list列表、冒泡排序、二分查找

循环语句的基本用法:
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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值