python进阶,在第一期的基础上做了极大的优化,整体更加美观易懂
五、for循环(下)
内容较多,分为上下两个篇幅,此篇是下
5.4、for与while的配合使用!
else使用:当循环正常结束之后要执行的代码 ——>需要正常结束,如果不是正常结束不会执行代码
例如:
# while与else组合
j = 0
while j < 5:
if j == 3:
break # break属于终止,不是正常结束,所以不会打印else
j += 1
print("生活不易,程序袁叹气!!!")
j += 1
else:
print("叹气完毕,继续肝!")
# 结果:
>>> 生活不易,程序袁叹气!!!
>>> 生活不易,程序袁叹气!!!
>>> 生活不易,程序袁叹气!!!
j = 0
while j < 5:
if j == 3:
j += 1 # 注意:此段j += 1的位置不同,如果此句在Continue后面,j不会自加,该程序会陷入死循环
continue # break属于终止,不是正常结束,所以不会打印else
print("生活不易,程序袁叹气!!!")
j += 1
else:
print("叹气完毕,继续肝!")
# 结果:
>>> 生活不易,程序袁叹气!!!
>>> 生活不易,程序袁叹气!!!
>>> 生活不易,程序袁叹气!!!
>>> 生活不易,程序袁叹气!!!
>>> 叹气完毕,继续肝!
for与else组合
str1 = "狂徒张三,和帮凶李四!"
for j in str1:
if j == "和":
break
print(j)
else:
print("结束!!")
# 结果:
>>> 狂
>>> 徒
>>> 张
>>> 三
>>> ,
str1 = "狂徒张三,和帮凶李四!"
for j in str1:
if j == "和":
continue
print(j)
else: # for循环中同理,只要是遇到break那么else就不起作用,如果是continue则跳过循环,那么else后的程序会执行
print("结束!!")
# 结果:
>>> 狂
>>> 徒
>>> 张
>>> 三
>>> ,
>>> 帮
>>> 凶
>>> 李
>>> 四
>>> !
>>> 结束!!
5.5、字符串和下标
字符串: 字符串是python中最常见的数据类型,我们一般使用引号来创建字符串(一般被引号引起来的内容都是字符串类型),创建字符串只要分配一个值即可
例如
name_1 = 'Ton1'
name_2 = """Ton2""" # 三个单引号或者是三个双引号都可以
name_3 = "Ton3"
print(f"{name_1}\n{name_2}\n{name_3}")
# 结果:
>>> Ton1
>>> Ton2
>>> Ton3
下标:下标又叫索引,就是编号,比如火车站座位号,座位号的作用,按照编号快速查找到对应的座位,同理下标也是类似,通过编号快速找到相应的数据的位置
str1 = "zhangsan" # 字母从零开始,一一对应。张三拼音共8个字母,从0开始到7结束
"""
打印张三拼音的开头首字母即z和s
"""
>>> print(str1[0]) # 写法 序列名,加下标 即序列名[下标]
>>> print(str1[5])
# 结果:
>>> z
>>> s
5.6、课外衍生扩展
非常建议此篇章多加练习,以后会经常用到while和for的
二人猜拳游戏 ,掷骰子游戏
玩家手动输入,电脑随机输入(随机模块)
# 使用模块方法,乐趣、首先使用input导入模块
# import random
# 使用模块内的功能函数->randint()
# 先导入模块,然后再模块名点需要使用的功能函数
# random.randint(0, 2) # randint随机函数,0到2之间三个数随机
import random # 导入模块
print("\n\n————————————有两个小游戏————————————\n乐趣、石头剪刀布\n2、骰子比大小\n\n输入开头数字即可")
num_1 = int(input("请输入:")) # input输入的默认为字符串类型,所以加int格式化为整型
print("\n游戏开始:")
if num_1 == 1:
computer = random.randint(0, 2) # randint->随机函数,括号内0,1即表示0到2三个数之间随机输出一个
print("请输入0~2之间的数")
print("0->石头,1->剪刀,2->布\n")
you = int(float(input("请出拳:"))) # 注意input类型为字符串,如果不转换,会导致结果不正确,其次因为题目是0到2之间,所以包含小数,于是进行去小数操作(先由字符串类型转换为浮点型再转换为整型),如果观众老爷有更好的办法欢迎留言
print()
# 玩家输入数字转换
print("玩家输入:", you)
if you == 0:
print("自动转换->玩家出石头")
elif you == 1:
print("自动转换->玩家出剪刀")
elif you == 2:
print("自动转换->玩家出布")
else:
print("输入错误,请重新运行程序并且输入") # 输入数据不在0到2之间
# 电脑随机数字转换
print("电脑输出", computer)
if computer == 0:
print("0代表石头,并自动转换为石头")
elif computer == 1:
print("1代表剪刀,并自动转换为剪刀")
else:
print("2代表布,并自动转换为布")
# 判断输赢 ->核心代码 # 石头剪刀布只有3种结果,平局,然后就是输赢,只要先把玩家赢的可能性写出来,然后去掉平手的可能性,其余的只有输入错误或者是输
if (you == 0 and computer == 1) or (you == 1 and computer == 2) or (you == 2 and computer == 0):
print("玩家胜利")
elif you == computer:
print("本局平局")
elif you > 2 or you < 0:
print("玩家输入错误,本局不计入成绩,请重新运行该程序,输入数据在0到2之间!!!")
else:
print("电脑胜利")
# 游戏结束
print("游戏结束!")
# 骰子数字比大小
elif num_1 == 2:
print("请输入1到6之间的整数,包括1和6\n")
computer_1 = random.randint(0, 5) # 括号内可以直接是1, 6 但是奉行计算机都是从0开始计数原则,于是宁可麻烦一点点也要“从零开始”
You_1 = int(input("请输入:")) # 大于,小于,等于,输入错误例如输入7
print()
computer_1 += 1
if You_1 > 6 or You_1 < 1: # 题目已说明 1到6之间整数,但是输入小于1大于6的数依然会出问题,为遵守游戏规则,加限制条件
print("您输入的数字为%d\n亲爱的玩家,您输入的数字小于1或者大于6,请重新运行该程序,再次输入!" % You_1)
elif computer_1 < You_1:
print("玩家输入骰子数字为:%d\n电脑随机生成骰子数字为:%d\n %d > %d -->玩家获胜" % (You_1, computer_1, You_1, computer_1))
elif computer_1 > You_1:
print("您输入的数字为: %d\电脑生成的数字为:%d\n %d > %d -->电脑获胜" % (You_1, computer_1, computer_1, You_1))
else:
computer_1 == You_1
print("玩家输入骰子数字为%d\n电脑生成随机骰子数字为%d\n真巧,数字一样,平手" % (You_1, computer_1))
print("游戏结束!")
#
else:
print("请输入1或2哦 !")