一、while循环
1、使用场景
用户名和密码反复输入 计算1-100 游戏:死了重生
2、while格式
while 条件:
要循环执行的代码(布尔类型的条件)
# 打印1-10之间的数字
# 初始值
n = 1
# 结束条件
while n <= 10:
print('----n=%d' % n)
# 变量要有变化
n += 1
练习1:打印1-50之间能被3整除的数字 打印1-10的累计和
# 打印1-50之间能被3整除的数字
n = 1
while n <= 50:
if n%3 ==0:
print('---'n)
n += 1
while n <= 50:
print('---',n)
n += 3
# 打印1-10的累计和
n = 1
sum = 0
while n <= 10:
sum += n
n += 1
print(sum)
练习2:超市购物、价格数量,允许买多个,计算金额
# 去超市买东西:价格数量,允许买多个,计算总额
total = 0
numbers = 0
while True:
# 先买
price = float(input('请输入价格:'))
number = int(input('请输入数量:'))
# 累加
total += price*number
# 数量累加
numbers += number
# 判断是否继续购买
answer = input('当前商品总额:%.2f,是否继续添加商品(q表示退出)' % total)
if answer == 'q':
# 跳出while
break
print('商品数量:%d,所有商品总额:%.2f' % (numbers,total))
练习3:产生随机数 ,可以猜多次,直到猜对为止,如果猜错了适当给出提示,猜大还是猜小了 # 猜了几次:一次就中:快买彩票 2-5次:运气还行哦 6次以上:运气一般
import random
ran = random.randint(1, 50)
count = 0
# 循环猜多次
while True:
guess = int(input('猜一个1-50之间的数字:'))
#count改变
count += 1
#猜对就结束
if guess == ran:
if count == 1:
print('快去买彩票')
elif 2 <= count <=5:
print('运气还可以')
elif count >=6:
print('运气一般')
print('恭喜猜对啦')
break
elif guess>ran:
print('猜大了')
else:
print('猜小了')
练习4: 猜拳游戏:3局
import random
n = 1
# 计数
p_count = 0
m_count = 0
while n<=3:
# 猜拳
# 机器产生数字0 1 2
ran = random.randint(0,2)
# 人猜数字
guess = int(input('请输入:剪刀(0) 石头(1) 布(2)'))
# 比较判断
if guess ==0 and ran ==2 or guess == 1 and ran == 0 or guess == 2 and ran == 1:
print('----我赢了!')
p_count += 1
elif ran == 0 and guess ==2 or ran == 1 and guess == 0 or ran == 2 and guess == 1:
print('----机器赢了!')
m_count += 1
else:
print('本轮平局')
# n的变化
n += 1
# 比较胜负
if p_count>m_count:
print('最终人获胜')
elif p_count<m_count:
print('最终机器获胜')
else:
print('最终平局')
二、for循环
1、格式1
for 变量名 in range(n):
循环体中内容
range(n):默认从0到n-1结束
range(start.stop):[start.stop)
range(start.stop,step):默认从start(包含)到stop(不包含)结束,步长由step指定,默认为1
# 1-10打印
for i in range(11):
print(i)
for i in range(5,11):
print('---',i)
for i in range(1,10,3):
print(i)
# 1-50累加和
sum = 0
for i in range(1,51):
sum += 1
print(sum)
练习1:输入用户名密码,若三次没有登陆成功,提示账号被锁定
for i in range(3):
# 提示输入用户名密码
username = input('用户名:')
password = input('密码:')
# 判断输入是否 admin 1234
if username == 'admin' and password == '1234':
print('登陆成功')
break
print('用户名或密码错误\n')
if i == 2:
print('账户锁定')
2、格式2
while,,,else for...else 特点:不被中断则执行
if 条件:
pass
else:
pass
for i in range(n):
循环体
else:
若上面for循环0-n-1没有出现中断(break)
3、对比
for 有固定次数
while 固定次数 不确定循环
for i in range(n):
pass
while 条件:
pass
while True:
pass
练习:掷骰子两个1-6,
玩游戏要有金币; 玩游戏赠金币1个,充值获得金币;
10元的倍数:20个金币; 玩游戏消耗5个金币;
猜大小:鼓励金2个,猜错没有奖励 超出6为大,否则是小
游戏结束: 1.主动退出 2.没有金币退出 只要退出打印金币数,共玩了几局
import random
# 金币数
coins = 0
# 计数器
count = 0
if coins < 5:
# 提示充值
print('金币不足请充值再玩:')
while True:
money = int(input('请输入充值金额:'))
# 10元倍数:20个金币
if money%10 ==0:
coins += money // 10 * 20
print('充值成功!当前金币有%d' % coins)
# 开启游戏
print('----开启游戏----')
answer = input('是否开始游戏(y/n)')
while coins>5 and answer == 'y':
# 扣金币
coins -= 5
# 赠送金币
coins += 1
# 产生两枚随机骰子数
ran1 = random.randint(1,6)
ran2 = random.randint(1, 6)
guess = input('洗牌完毕,请猜大小:')
# 判断比较
if guess == '大' and ran1+ran2>6 or guess=='小' and ran1+ran2<=6:
print('恭喜猜对了,你赢了')
coins += 2
else:
print('很遗憾,猜错了')
# 玩滴次数
count += 1
answer = input('是否继续游戏(y/n)')
# 打印 次数 金币数
print('共玩了%d次' % count)
break
else:
print('不是10的倍数,充值失败!')