目录
else不仅能和if连用,它还能与while连用。
语法结构:
while 条件:
循环体代码
...
else:
代码块
...
注意:else中的代码块并不是一定会执行,只有在while循环正常结束的情况下才会执行else中的代码,如果使用break跳出while循环,则不会执行else中的代码。
举例:
# 不用break跳出循环时
num = 1
while num < 5:
print(num)
num += 1
else:
print('while循环正常结束了!!')
'''
输出结果
1
2
3
4
while循环正常结束了!!
'''
# 用break跳出循环时
num = 1
while num < 5:
if num == 3:
break
print(num)
num += 1
else:
print('while循环正常结束了!!')
'''
输出结果
1
2
'''
死循环就是永远无法结束的循环,并且会一直占用CPU工作,极度的影响电脑的性能,甚至造成硬件的损坏。
举例:
# 死循环
i = 0
while i < 10:
print('出不去了')
# 如果循环内的代码不会改变i的值
# 这个程序就会一直执行代码print('出不去了')
while与if一样,可以在子代码中加入多个while循环。
举例:
# while的嵌套
i = j = 0
while i < 4:
while j < 4:
print('*', end='') # 让输出在同一行
j += 1 # 防止死循环
print() # 换行
i += 1 # 防止死循环
j = 0 # 让程序可以在进入小的while循环
'''
输出结果
****
****
****
****
'''
range函数在python2和python3中有所区别
range函数主要用于生成一个整型的数据集。
举例:
# range函数中只有单个数字,取值范围为0<=i<4的整数
for i in range(4):
print(i)
'''
输出结果
0
1
2
3
'''
# range函数中有两个数字,取值范围为1<=i<4的整数
for i in range(1,4):
print(i)
'''
1
2
3
'''
# range函数中有三个数字,前两个代表范围,第三个代表从起始位开始,每次增加的数值
for i in range(1, 6, 2):
print(i)
'''
1
3
5
'''
这三个关键字的用法在for循环中与在while循环中一致。
while和if都能嵌套,for循环当然也可以。
举例:
# 输出3*3的星号矩阵
for i in range(4): # i取值0<=i<4
for j in range(4): # j取值0<=j<4
print('*', end='')
print() # 换行
'''
输出结果
***
***
***
'''
类型转换
res = int('123')
print(res, type(res))
'''
输出结果
123
'''
进制数转换
print(bin(100)) # 输出结果:0b1100100
print(oct(100)) # 输出结果:0o144
print(hex(100)) # 输出结果:0x64
print(int('1100100', 2)) # 输出结果:100
print(int('144', 8)) # 输出结果:100
print(int('64', 16)) # 输出结果:100
类型转换
res = float('11.11')
print(res, type(res)) # 输出结果:11.11
res = float('11')
print(res, type(res)) # 输出结果:11.0
res = float(11)
print(res, type(res)) # 输出结果:11.0
类型转换
print(str(11), type(str(11)))
print(str(11.11), type(str(11.11)))
print(str([1, 2, 3, 4]), type(str([1, 2, 3, 4])))
print(str({'name': 'jason'}), type(str({'name': 'jason'})))
print(str((1, 2, 3, 4)), type(str((1, 2, 3, 4))))
print(str({1, 2, 3, 4}), type(str({1, 2, 3, 4})))
print(str(True), type(str(True)))
输出结果:
索引取值
s = 'hello,world'
print(s[0]) # 输出结果:h
print(s[1]) # 输出结果:e
切片操作
s = 'hello,world'
print(s[1:4]) # 输出结果:ell
步长
s = 'hello,world'
print(s[1:8:2]) # 输出结果:el,o
切片拓展
s = 'hello,world'
print(s[-1]) # 输出结果:d
print(s[-1:-8:-1]) # 输出结果:drwo
统计字符串长度
print(len('ab cd')) # 输出结果:5
成员运算
print('ll' in 'hello,world') # 输出结果:True
移除首位指定字符
s = ' asd '
print(s.strip()) # 输出结果:asd
s = '###asd#'
print(s.strip('#')) # 输出结果:asd
按照指定字符切割字符串
data = 'tom|1111|eat'
print(data.split('|')) # 输出结果:['tom', '1111', 'eat']
print(data.split('|', 1)) # 输出结果:['tom', '1111|eat']
print(data.rsplit('|', 1)) # 输出结果:['tom|1111', 'eat']
编写一个用户登录程序。
要求:
is_quit = True # 判断程序是否要继续运行的变量
login_count = 3 # 存储可输错密码的次数
login_msg = 'tom|123' # 存储登录的用户名和密码,用|分开
real_username = login_msg.split('|')[0] # 存储登录的用户名
real_password = login_msg.split('|')[1] # 存储登录的密码
while is_quit: # 让程序一直运行,直到is_quit为False
# 获取用户输入的用户名并将首尾的空格去除
username = input("请输入用户名:").strip()
# 获取用户输入的密码并将首尾的空格去除
password = input("请输入密码:").strip()
# 判断用户输入的用户名和密码是否与存储的用户名和密码一致
if username == real_username and password == real_password:
print("登录成功!") # 提示用户登录成功
while is_quit: # 这里用于用户登录成功后可以一直输入指令
cmd = input("请输入指令:") # 获取用户的输入指令
if cmd == 'quit': # 判断用户是否要退出
is_quit = False # 用于退出大while和小while的循环
print("拜拜了您嘞!") # 与用户的离别语
else: # 如果用户输入的不是quit,则执行用户的指令
print("正在执行:%s..." % cmd)
else: # 这里写的是用户输错用户名或密码的情况
login_count -= 1 # 输错了用户名或密码,次数就要减1次
# 提醒用户输错了账号,告诉用户剩余的机会
print("用户名或密码错误,你还有%d次机会!" % login_count)
# 判断用户的次数是否用完
if login_count == 0:
# 提醒用户次数用尽,并提醒用户接下来的操作
print("你的剩余机会已用尽,是否重置(y/n)")
while True: # 确保用户输入的是y或者n,而不是其他
cmd = input() # 获取用户输入
if cmd == 'y':
# 如果用户输入了y,则重置登录可输错密码的次数
login_count = 3
# 退出当前循环
break
elif cmd == 'n':
# 如果用户输入了n,则与用户告别
print("拜拜了您嘞!")
# 因为用户布响丸啦,让最大的那个while循环条件不成立
is_quit = False
else:
# 提醒用户不要输入y或n以外的指令
print("请输入y或n")
手机扫一扫
移动阅读更方便
你可能感兴趣的文章