Python学习笔记(九) 分支结构语句之条件判断语句if、elif、else及循环嵌套

考过IE励志当攻城狮 发表于 2021/05/20 15:53:25 2021/05/20
【摘要】 史上最为详细的python学习笔记

1、条件判断语句ifelifelse及循环嵌套

Python程序语言指定任何0非空(null)值true0 或者 nullfalse

Python编程中if语句用于控制程序的执行,基本形式为:

if 判断条件:

执行语句...

else:

执行语句...

其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。

else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句。

username = 'admin'
'''
    python规定:
        如果判断的变量值是 ''  0  None,默认是False
        如果判断的变量有值且不为以上内容,默认是True
'''
if username:
# 等价于 if username != ''
    print('登录成功!')

else:
    print('登录失败')
print('---------------')

 

'''
猜数字游戏
'''

import random       # 导入随机数函数库
rand = (random.randint(1, 10))      # 1-10,包含10,注意:不可强转为str类型,会报错TypeError: 'str' object is not callable

# print('rand = ', rand)
num = int(input('请输入1-10之间的数:'))

if num == rand:
    print('恭喜中大奖啦,奖励笔记本一个!')
else:
    print('很遗憾你猜错啦,与奖品擦肩而过~~~')

print('rand = ', rand)      # 如果变量在语句的最后面调用,可以不使用占位符或.format()函数

 

小练习:防沉迷系统

'''
小练习:防沉迷系统
    输入年龄和姓名,如果年龄大于18岁,则打印:xxx年龄为xx岁,可以玩3小时游戏,
    否则打印:xxxxx岁,只可以玩1.5小时游戏。
'''
print('=== 防沉迷系统 ===')
name = input('请输入姓名:')
age = int(input('请输入年龄:'))

if name and age >= 18:
    print('{}年龄为{}岁,可以玩3小时游戏。'.format(name, age))
elif name and age < 18 and age > 0:
    print('{}年龄为{}岁,只可以玩1.5小时游戏。'.format(name, age))
elif not name or not age:
    print('姓名或年龄不能为空,请重新输入。')
else:
    print('年龄不可以为负数!')


print('-------- End --------')

报错:ValueError: invalid literal for int() with base 10: 'abc'

有时候需要用int()函数转换字符串为整型,但是切记int()只能转化由纯数字组成的字符串,如下例:

非纯数字组成的字符串强转为整型会报错:ValueError: invalid literal for int() with base 10 

 

if 语句的判断条件可以用>(大于)、<(小于)==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。

当判断条件为多个值时,可以使用以下形式:

if 判断条件1:

执行语句1...

elif 判断条件2:

执行语句2...

elif 判断语句3:

执行语句3...

else:

执行语句4...

由于 python 不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。

 

if有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外 and or 的优先级低于>(大于)、<(小于)等判断符号,即大于和小于在没有括号的情况下会比and””or要优先判断

小练习:开心消消乐

'''
小练习:开心消消乐
    1、用户输入级别lv1, lv2, lv3
    2、判断用户级别,lv1可以解锁100关,lv2可以解锁200关,lv3可以解锁300
    3lv2lv3需要充值后解锁关卡,且充值金额是100的倍数
'''
print('*' * 10, '欢迎来到开心消消乐', '*' * 10)

level = input('请输入您当前的级别(lv1, lv2, lv3): ')
if level == 'lv1':
    print('您当前的等级为lv1,可以免费玩100关。')

elif level == 'lv2':
    print('您当前的等级为lv2,充值后可解锁至200关。')
    answer = input('您是否要充值?(y / n): ')

    if answer == 'y' or answer == 'Y':
        top_up = int(input('请输入充值金额(必须是100的倍数)'))

        if top_up % 100 == 0 and top_up > 0:
            # 如果变量在语句的最后面调用,可以不使用占位符或.format()函数
            print('充值成功!充值金额是:%d,购买后可解锁至200关!' % top_up)
        else:
            print('充值金额必须是100的倍数,请重新充值。')

    elif answer == 'n' or answer == 'N':
        print('放弃充值,继续当前游戏。')

    else:
        print('输入无效,请尝试重新输入。')

elif level == 'lv3':
    print('您当前的等级为lv3,充值后可解锁至300关。')
    answer = input('您是否要充值?(y / n): ')

    if answer == 'y' or answer == 'Y':
        top_up = int(input('请输入充值金额(必须是100的倍数)'))

        if top_up % 100 == 0 and top_up > 0:
            print('充值成功!充值金额是:%d,购买后可解锁至300关!' % top_up)
        else:
            print('充值金额必须是100的倍数,请重新充值。')

    elif answer == 'n' or answer == 'N':
        print('放弃充值,继续当前游戏。')

    else:
        print('输入无效,请尝试重新输入。')

else:
    print('输入有误,请尝试重新输入。')
print('*' * 15, 'End', '*' * 15)

 

小练习:猜数字,得奖品


import random       # 导入随机数函数库
rand = (random.randint(1, 10))      # 不可强转为str类型,会报错TypeError: 'str' object is not callable
# print('rand = ', rand, type(rand))
num = int(input('请输入1-10之间的数:'))

if num == rand:
    print('恭喜中大奖啦,奖励笔记本一个!')
else:
    print('很遗憾你猜错啦,与奖品擦肩而过~~~')

print('rand = ', rand)      # 如果变量在语句的最后面调用,可以不使用占位符或.format()函数

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。