024-40第4章、程序的控制流转

1.顺序结构

# 赋值运算符的顺序,从右到左  把右侧的值赋值给左侧的变量
name = '张三'
age = 20
a = b = c = 100     # 链式赋值
a, b, c, d = 'room' # 字符串分解赋值  单独赋一个字符的值
print(a)    # r
print(b)    # o
print(c)    # o
print(d)    # m

2.选择结构

2.1if语句

number = eval(input("请输入你的六位中奖号码:"))
if number == 987654:
    print("恭喜你,中奖了!")
if not number == 987654:
    print('你未中本期大奖')

2.1.1使用 条件表达式 进行简化

result = '恭喜你,中奖了!'  if number == 987654 else '你未中本期大奖'
print(result)
print('恭喜你,中奖了!'  if number == 987654 else '你未中本期大奖')

2.1.2if的语句判断

结果为True则执行if语句  如果结果为1则结果为True,结果为0则为False
n = 98
if n % 2:
    print('n是奇数') # 由于98 % 2的结果是0,所以不执行
if not n % 2:
    print('n是偶数')

2.1.3判断一个字符串是空字符串

x = input('请输入一个字符串')
# 在Python中一切皆对象,每个对象都有一个布尔值。而非空字符串结果为True,空字符串结果为False
if x:
    print('x是一个非空字符串')
if not x:
    print('x是一个空字符串')
# 表达式也可以是一个单纯的布尔型变量
flag = True
if flag:
    print('flag的值是True')
# 如果if语句中只有一句代码,可以将语句块写在冒号的后面
a = 10
b = 5
if a > b:max = a
else: max = b
print('最大值为:', max)

2.1.4多分支  

# 多分支 判断成绩
score = eval(input('请输入你的成绩:'))
if score < 0 or score > 100:
    print('成绩有误!!')
elif score > 95:
    print('s级')
elif score > 90:
    print('a级')
elif score > 80:
    print('b级')
elif score > 70:
    print('c级')
elif score > 60:
    print('d级')
else:
    print('e级')

2.1.5 嵌套if的使用

answer = input('请问,你喝酒了吗:(y/n)')
if answer == 'y':
    proof = eval(input('请输入酒精含量:'))
    if proof < 20:
        print("构不成酒驾")
    elif proof < 80:
        print('已构成酒驾,请不要开撤')
    else :
        print('你已构成醉驾,请马上睡觉')
else:
    print('你走吧,没你事')

2.1.6if多条件的满足

user = input('请输入你的用户名:')
password = input('请输入你的密码:')
if user == 'admin' and password == 'e1234567':
    print('登录成功')
else:
    print('账号或密码错误,登录失败')

2.2match语句——模式匹配

score = input('请输入成绩等级:')
match score:
    case 's':
        print('优秀')
    case 'a':
        print('良好')
    case 'b':
        print('一般')
    case 'c':
        print('及格')
    case 'd':
        print('不及格')
# 如果score都没有匹配上,则跳过match语句,。例如输出abc,则跳过match语句
# 如果是match语句在while语句中,可加break

3.循环结构

3.1for循环

3.1.1遍历字符串

for i in 'hello':
    print(i)    # 打印字符串,一个字符一行

3.1.2range函数  
产生一个[n, m]的整数序列,包含n不包含m

for i in range(1, 11):
    print(i)    # 打印1 - 10 整数,一个整数一行

3.1.3计算1 - 10的和

sum = 0
for i in range(1, 11):
    sum = sum + i
print('1-10之间的和为:', sum)

3.1.4练习一、判断100-999之间的水仙花数

# 水仙花数:个位**3 + 十位**3 + 百位**3 == 原本的值
for i in range(100, 1000):
    single = i % 10     # 个位数
    tens_digit = i // 10 % 10   # 十位数
    hundreds_digit = i // 100 % 10  # 百位数
    if single ** 3 + tens_digit ** 3 + hundreds_digit ** 3 == i:
        print(i)

3.1.5遍历循环的扩展形式

s = 0   # 用于存储累加和
for i in range(1, 11):
    s += i
# 循环正常结束就执行else部分,如果是break异常跳出循环则不执行else部分
else:
    print('1-10之间的累加和为:', s)

3.2.while循环

3.2.1while循环的4个步骤

# 1.初始化变量
answer = input('今天要上课吗?y/n:')
# 2.条件判断
while answer == 'y':
    # 3.语句块
    print('好好学习,天天向上')
    # 4.改变变量
    answer = input('今天要上课吗?y/n:')

3.2.2计算1-100之间的和

sum = 0
# 1.初始化变量
i = 1
# 2. 条件判断
while i <= 100:
    # 3.语句块
    sum += i
    # 4.改变变量
    i += 1
# 循环正常结束(无break跳出循环) 执行else语句
else:
    print('1-100之间的累加和是:', sum)

3.3.3使用无限while循环模拟登录

# 1.初始化变量
i = 0
# 2.条件判断
while i < 3:
    # 3.语句块
    user_name = input('请输入用户名:')
    password = input('请输入密码:')
    if user_name == 'admin' and password == 'e1234567':
        print('登录成功')
        i = 8
        # break
    else:
        if i < 2:
            print('用户名或密码不正确,你还有', 2 - i, '次机会')
            # 4.改变变量
            i += 1
if i == 3:  # 当用户名或密码输错3次后,循环执行结束了,i的值 = 3
    print('本机已冻结')

4.pass空语句

'''
pass是Python中的保留字——在语法结构中起到占位符的作用,防止语法报错
    一般用于if、for、while、函数定义、类定义中
'''

if True:
    pass

while True:
    pass

for i in range(10):
    pass

5.章节练习

5.1练习一,键盘输入一个4位数的年份,判断是否是闰年

year = eval(input('请输入4位数的年份,将判断是不是闰年:'))
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
    print(year, '年是闰年')
else:
    print(year, '年不是闰年')

5.2练习二,模拟10086查询功能

# 输入1显示当前余额。输入2显示当前流量,输入3显示当前的剩余通话。输入0退出自助查询系统
inquire = 1
while inquire:
    print('------------欢迎使用10086查询功能------------')
    print('1查询当前余额\n2查询当前流量\n3查询剩余通话\n0退出系统')
    inquire = eval(input('请输入你的选择:'))
    match inquire:
        case 1:
            print("当前余额还有xx.xx元")
            break
        case 2:
            print('当前流量还剩xx.xxGB')
            break
        case 3:
            print('当前通话时长还剩xxx分钟')
            break
        case 0:
            print('系统已退出')
            break

5.3练习三,使用嵌套循环输出九九乘法表

for i in range(1, 10):
    for j in range(1, i + 1):
        print(j, '*', i, '=', j * i, end='')
        print('  ', end='')
    print()

# 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

5.4练习四,猜数字


# 猜数字,产生一个随机数,大了或者小了可提示
import random
rand = random.randint(1, 100)
count = 10  # 记录猜数的次数,只有10次机会
while count >= 1:
    number = eval(input("请输入你要猜的数字:"))
    if number == rand:
        print("恭喜你猜中了")
        break
    elif number > rand:
        print("大了,还剩", count - 1, '次机会')
    else:
        print('小了,还剩', count - 1, '次机会')
    count -= 1
else:
    print('很遗憾没有猜中, 答案是:', rand)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值