一、while+else

# while与else连用
 当while没有被关键字break主动结束的情况下,正常结束循环代码之后会执行else的子代码。
    如:
count = 1
while count < 10:
    print(count)
    count += 1
else:
    print('while循环寿终正寝了')
    

image-20220308211531426

二、死循环

# 即无限循环,永远不会终止,这就导致了死循环会极度的影响电脑的性能,甚至会损坏计算机硬件,并且一直占用cpu工作。如:
	count = 10
    while true:
        count *= 10
  

三、while的嵌套

# while里面再套while.
如:
while True:
    username = input('username>>>:')
    password = input('password>>>:')
    if username == 'jason' and password == '123':
        print('登录成功')
        while True:
            cmd = input('请输入您的指令>>>:')
            print(cmd)
    else:
        print('用户名或密码错误')
# 需要注意的是此代码里面的小while是个死循环代码

image-20220308205423016

四、for循环

前提:for循环可以做到的事情while循环都可以做到,for循环使用频率要比while循环高很多,但是难度却没有while循环高。

语法结构: 
	'''
	for 变量名  in for循环对象:有字符串、列表、字典、元组、集合

	'''
 # 循环字符串:依次取出一个字符,如:
  for i in 'hello wored':
        print(i)
 # 循环字典(特殊):循环字典只能取到字典里的K,V无法直接获取
如:userinfo_dict = {'username': "jason",'age': 18,'gender': 'make'}
for i in userinfo_dict:
    print(i)
 # 循环元组
for i in (11,22,33,44,55):
    print(i)
 # 循环集合:字典与集合内部的元素都是无序的
for i in {11,22,33,44,55,66}:
    print(i)
# name_list = ['jason','kevin','tony','tank','oscar']
1.使用while循环依次打印出列表中所有的元素
count = 0
while count < 5:
    print(name_list[count])
    count += 1
2.使用for循环依次打印出列表中所有的元素
for name in name_list:
    print(name)
    
 # 总结以上两段代码,我们可以清楚的发现 for循环要比while循环简单得多,所以一般情况下涉及到循环取值的时候,都会考虑用for循环,而且使用while循环的话,前提是你得知道列表中有多少个元素,而for循环就不用担心这个问题。 

image-20220308205654299

五、for循环补充

# for+break
	break结束本层for循环。
如:for i in range(10):
        if i == 4:
           break
    print(i)
  * 它只会打印到3

# for+continue
	continue结束本次for循环,直接开始下一次
如:for i in range(10):
        if i == 4:
            continue
    print(i)
  * 那它就会跳过4,打印0-9  
    
# for+else
	for循环正常结束之后运行else子代码,与while一致
如:for i in range(10):
        if i == 4:
            continue
        print(i)
    slse:
        print('寿终正寝')
  * 它会先跳过4,然后把if条件循环完再执行else的条件

# for循环自带增1

# for循环嵌套
for i in range(3):
    for i in rang(5):
        print('*')

六、range关键字

# range其实就是一个迭代器,用于产生一个数据集合,但是节省空间
# 用法一:括号内只写一个数字,默认从0开始,顾头不顾尾
for i in range(10):
    print(i)
    0,1,2,3,4,5,6,7,8,9,

# 用法二:括号内写两个数字,自定义起始位置,顾头不顾尾
for i in range(1,10):
    print(i)
    1,2,3,4,5,6,7,8,9,
# 用法三:括号内写三个数字,第三个数表示的是等差数列的差值,默认情况下是1
for i in range(1,10,2):
    print(i)
    1,3,5,7,9,
#range方法在python2和python3中有所区分
在python2中range是直接产生一个列表,元素很多的情况下比较占空间,在python3中range相当于哆啦A梦的口袋,不占空间但是可以取出很多数据

七、数据类型内置方法

# 如何查看数据类型的内置方法?
可以借助于编程软件的自动提示,采用句点符快速查看
# int整型
类型转换
# 将int方法执行之后的结果赋值给变量res
res = int('123')
# int方法只能转换纯数字的字符串
# 将十进制转换成其它机制
print(bin(100))  # 0b1100100   二进制(0b开头)
print(oct(100))  # 0o144       八进制(0o开头)
print(hex(100))  # 0x64        十六进制(0o开头)
# 将其它机制转换成十进制
print(int('0b1100100', 2))
print(int('0o144' 8))
print(int('0x64', 16))
float浮点型
1.类型转换
# res = float('11,11')
# print(res,type(res))
# 11.11
# 字符串内置方法
1.类型转换
str可以转换所有的基本数据类型
# s1 = 'hello world'
 1.索引取值
   print(s1[0])
# h
2.切片操作
print(s1[2:4])
# ll   顾头不顾尾
3.步长
print(s1[2:9:1])  # 第三个参数是步长,默认是1,依次获取
print(s1[2:9:2])  # 间隔一个取一个
print(s1[-1])     # 获取最后一个字符
print(s1[-1:-5:-1])  # dlro  第三个参数还可以控制索引的方向
4.统计字串符中的字符个数
# print(len(s1))  # 11
5.成员运算
# print('ll' in s1)
6.移除字符串首尾指定的字符(使用率较高)
# name1 = '$$$jas$on$$$$'
print(name1,strip('$'))  # jas$on
7.按照指定的字符切割字符串
# data = 'jason|123|jdb'
print(data,split('|')) 
# ['jason','123','jdb']
# split方法切割完字符串之后是一个列表
data = 'jason|123|jdb'
print(data,split('|',maxsplit=1)) 
# ['jason','123|jdb']