循环语句

for循环

for循环通常用来遍历序列,迭代对象中的元素,一般应用在循环次数已知的情况下。

语法格式

#迭代变量用于保存读取出的值,对象为可遍历可迭代的,如序列:字符串,列表,元素等;
for 迭代变量 in 对象:
    语句

 案例

# i变量依次取出列表中的值
for i in [1,2,3,4,5]:
    print(i,end=' ')#输出 1 2 3 4 5  

 

 range函数的使用

用于生成一系列连续的整数,多用于for循环中。


语法格式

range(start,end,step)
start:指定起始值,默认从0开始
end:指定结束值,但不包括此值,如range(6)包括0 1 2 3 4 5
step:步长,默认为1,如果为range(1,6,2)则包括1 3 5 

 

案例

#使用range()完成范围指定
print(range(8))  #包含0不包含8,如0,1,2,3,4,5,6,7
#打印3次hello
for i in range(3): #相当于每次循环取出一个值,执行一遍hello,取完所有值循环也就结束了。
    print('hello--->',i)

#输出10以内不包括10所有的奇数
for i in range(1,10,2):
    print(i,end=' ')#输出 1 3 5 7 9 

#循环吃5个馒头
name='赵飞'
for i in range(1,6):
    print('{}很饿,正在吃第{}个馒头'.format(name,i))

#循环嵌套if结构语句
name = '张无忌'
for i in range(1,6):
    if i==3:
        print('{}把这个馒头喂了狗。'.format(name))
    else:
        print('{}很饿,正在吃第{}个馒头。'.format(name,i))

 

 

当range(0)时,什么也没有,range(1)时,里面有0

for i in range(1):
    print(i) #输出 0

for i in range(0):
    print(i) #什么也没有

 

range(m,n,step)

#step步长
for i in range(1,50,5):
    print('--->',i)
---------------------------
---> 1
---> 6
---> 11
---> 16
---> 21
---> 26
---> 31
---> 36
---> 41
---> 46

 

for-else循环

当for执行完毕或者没有循环数据时,才会执行else

name='赵飞'
num = int(input('请输入需要蛋糕的数量:'))
for i in range(num):
    print('{}的肚子很饿,正在吃第{}个蛋糕。'.format(name,i+1))
else:
    print('{}饿哭了'.format(name))
----------------脚本执行结果-------------------------
请输入需要蛋糕的数量:3
赵飞的肚子很饿,正在吃第1个蛋糕。
赵飞的肚子很饿,正在吃第2个蛋糕。
赵飞的肚子很饿,正在吃第3个蛋糕。
赵飞饿哭了

请输入需要蛋糕的数量:0
赵飞饿哭了

 

while循环

while循环是通过一个条件来控制是否要继续执行循环体的语句。

语法格式

while 条件:
    语句体
else:
    语句体

案例

#打印1-10之间的数字
for i in range(1,11):
    print(i)

#使用while打印1-10之间的数字
i=1
while i<11:
    print(i)
    i+=1

#打印1-30之间3的倍数
i=1
while i<=30:
    if i%3==0:
        print(i)
    i+=1
#方法二
n=3
while n<=30:
    print(n)
    n+=3

#累计1-20相加
i=1
n=0
while i<21:
    n+=i
    i+=1    
print(n)

模拟取款机

输入6位银行密码,错误3次吞卡

password = 666666
i = 1
while i<4:
    num = int(input('请输入您的银行卡密码:'))
    if num == password:
        print('密码正确,进入系统中...')
        i=4
    else:
        print('密码错误,已经输错',i,'')
    i+=1
    if i==4:
        print('密码错误3次,请与发卡行联系!')

 

 

跳转语句

break 完全终止循环

continue 跳过后续语句直接进入下一次循环

 

break案例

num = 2
for i in range(3):
    username=input('请输入账号:')
    password=input('请输入密码:')
    if username=='tz' and password=='123456':
        print('登录成功!欢迎用户{}!'.format(username))
        break
    elif num!=0:
        print('账号或密码错误,你还有{}次机会!'.format(num))
        num=num-1
else:
    print('你的机会已用完,该账户已锁定!')

 

continue案例(p40节)

#3的倍数进行累加
sum = 0
for i in range(10): #0~9
    if i%3==0:
        continue #跳过下方的累加语句
    sum+=i
print('sum------>',sum)

 

循环嵌套

while里套while

for里套for

while里套for

for里套while

...

套来套去,无穷尽也

打印直角三角形

#打印一个直角三角形
i=0
while i<6:
    print('*'*i)
    i+=1

#循环嵌套打印直角三角形
ceng=1
while ceng<6:
    count=1
    while count<=ceng:
        print('*',end='')
        count+=1
    print()
    ceng+=1

 

打印99乘法表

#打印99乘法表
c=1
while c<=9:
    n=1
    while n<=c:
        print('{}*{}={}'.format(n,c,(n*c)),end=' ')
        n+=1
    print()
    c+=1
---------------------------------------------------------------
E:\python>python while_demo.py
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

 

pass 空语句,相当于先占位,不写,想好在写啥。编译也不会报错。

#只要有缩进且缩进内容不确定的时候可使用pass
if 10>7:
    print('10大于7')
else:
    pass

 

澳门赌场游戏

import random

print('*'*25)
print('  欢迎进入澳门赌场')
print('*'*25)

Game_name=input('请输入您的账号:')
Game_money=0

result=input('赌场规则:100RMB可换30个筹码,充值必须为100的倍数,还要继续么(y/n):')

if result != 'n':
    while result!='n':
        Game_money=int(input('请输入您想要充值的金额:'))
        if Game_money %100 ==0:
            Game_money=Game_money//100*30
            print('您当前的筹码个数为:',Game_money)
            result=input('是否开始游戏?(y/n)')
            if result!='n':
                print('进入游戏中...')
                while Game_money>=30:
                    #产生骰子值
                    t1=random.randint(1,6)
                    t2=random.randint(1,6)
                    t3=t1+t2
                    #当两个骰子的值大于6则大
                    guess=input('大还是小?')
                    if (t3>6 and guess=='') or (t3<=6 and guess==''):
                        Game_money+=30
                        result=input('恭喜你,猜对啦!筹码+30,当前筹码为{},再来一把?(y/n)'.format(Game_money))
                        if result=='n':break
                    else:
                        Game_money-=30
                        print('猜错了!筹码-30,当前筹码为{}!'.format(Game_money),end='')
                        if Game_money<30:
                            result=input('抱歉,你的筹码不足,如需继续请充值(y/n)')
                        else:
                            result=input('再来一把?(y/n)')
                            if result=='n':break
            else:
                print('不玩也不退,谢谢您的光临!')
                break
        else:
            print('您充值的金额不正确!请重新充值!')
    else:
        print('欢迎您下次光临!')    
else:
    print('欢迎您下次光临!')

 

 

学习来自:B站大学 P31-40

《python从入门到项目实践》明日科技 第九章

posted @ 2020-10-30 22:07  努力吧阿团  阅读(367)  评论(0编辑  收藏  举报