Pyf20230309(Python分支和循环)

01流程控制

1.流程控制 - 通过代码控制程序执行的顺序

2.三种程序执行的方式

1)顺序结构:代码从上往下按顺序一条一条的执行,每条语句只执行一次(默认)

2)分支结构:执行代码的时候根据条件选择执行或者不执行某些代码(if语句)

3)循环结构:让代码重复执行,代码写一遍重复执行多次(for、while)

02分支结构

1.if单分支结构 - 如果xxx就xxx(满足某个条件才执行某个操作,这个条件不满足的是这个操作就不执行)

1)语法:
if 条件语句:
代码段
2)说明:
a.if - 关键字;固定写法
b.条件语句 - 判断语句(可以是任何有结果的表达式)
c.: - 固定写法(注意:必须是英文输入法的冒火)
d.代码段 - 结果上是和if保持一个缩进的一条或多条语句(至少一条)
逻辑上代码段就是满足条件才会执行的代码
3)执行过程:先判断条件语句是否成立,如果成立就执行代码段,否则代码段就不执行

例:如果score的值大于80分就打印’通过’
score = 81
if score > 80:
    print('通过')
练习1:根据num的值打印’奇数’
print('练习1--------------------')
num = int(input('输入一个数:'))
if num % 2 != 0:
    print(num, '这是个奇数')
练习2:判断指定的三位数是否是水仙花数,如果是就打印’水仙花’

水仙花:一个三位数各个位数的立方和等于他本身,153 == 13+53+3**3

print('练习2--------------------')
num2 = int(input('请输入一个3位数:'))
if ((num2 // 100) ** 3) + ((num2 // 10 % 10) ** 3) + ((num2 % 10) ** 3) == num2:
    print(num2, '是水仙花数', sep='')

2.if双分支结构 - 如果xxx就xxx否则就xxx(满足条件执行某操作,条件不满足的时候执行另外的操作)

1)语法:
if 条件语句:
代码段1(满足条件需要执行的代码)
else:
代码段2(不满足条件的时候需要执行的代码)

练习3:根据num的值打印"奇数’或者′偶数’
print('练习3--------------------')
num = int(input('输入一个数:'))
if num % 2 != 0:
    print(num, '这是个奇数')
else:
    print(num, '这是个偶数')
练习4:根据age的值打印’成年’或者未成年
print('练习4--------------------')
age = int(input('输入年龄:'))
if age >= 18:
    print('成年')
else:
    print('未成年')
练习5:如果num大于10就让num减5,否则将num加5
print('练习5--------------------')
num3 = int(input('输入一个数:'))
if num3 > 10:
    num3 -= 5
else:
    num3 += 5
print(num3)

3.if多分支结构 - 如果xxx就xxx,如果xxx就xxx,如果xxx就xxx,…(根据不同的条件做不同的事情)

1)语法1: - 直接使用多个if单分支
if 条件语句:
代码段
if 条件语句:
代码段
if 条件语句:
代码段

语法2: - 多个条件之间存在:其中一个条件成立,其它条件一定不成立的关系
执行特点:后面的条件是在前面的条件不成立的情况下进行判断
if 条件语句1:
代码段1
elif 条件语句2:
代码段2
elif 条件语句3:
代码段3

elif 条件语句N:
代码段N

例∶如果考试考了180分–买车;考了90多分–买鞋;考了80多分–吃火锅;88分以下–打死
score = 89
# 方法1:
if score == 100:
    print('买车')
if 90 <= score < 100:
    print('买鞋')
if 80 <= score < 90:
    print('吃火锅')
if score < 80:
    print('打死')
# 方法2:
if score < 80:
    print('打死')
elif score < 90:
    print('吃火锅')
elif score < 100:
    print('买鞋')
else:
    print('买车')
练习6:如果num是偶数就打印:偶数,如果是奇数就打印:奇数,如果能被5整除就打印:5的倍数
print('练习6--------------------')
num = 50
if num % 2 == 0:
    print(num, '是偶数')
    if num % 5 == 0:
        print('5的倍数:', num // 5)
elif num % 2 != 0:
    print(num, '是奇数')
    if num % 5 == 0:
        print('5的倍数:', num // 5)

03循环结构

1.for循环

1)语法:
for 变量 in 序列:
循环体
2)说明:
a.for - 关键字,固定写法
b.变量 - 变量名
c.in - 关键字,固定写法
d.序列 - 任何容器型数据类型的数据,如:字符串、列表、元组、字典、集合、迭代器、生成器、range等
e.: - 固定写法
f.循环体 - 结构上,循环体就是和for保持一个缩进的一条或多条语句(至少一句)
逻辑上,循环体就是需要重复执行的代码
3)执行过程:
让变量去序列中取值,一个一个的取,取完为止;每取一个值就执行一次循环体
如果要控制for循环的循环次数,只需要控制序列中元素的个数

例:使用for循环控制程序打印’hello world!'5次
for x in 'asvbg':
    print(x, 'hello world!')

2.range函数 - 创建等差数列

1)range(N) - 产生[0,N)的等差数列,差是1;range(5),0 1 2 3 4
2)range(M,N) - 产生[M,N)的等差数列,差是1;range(5,10):5 6 7 8 9
2)range(M,N,step) - 产生[M,N)的等差数列,差是step;range(1,10,2):1 3 5 7 9
range(6,1,-1):6 5 4 3 2
注意:M:对应等差数列的首项,默认是0
N:对应等差数列的尾项(但是和尾项不相等)
step:差,默认是1

# 0,1,2,3,4,5
print('----------------------------------------')
for x in range(6):
    print(x)

# 1,3,5,7,9,11
print('----------------------------------------')
for x in range(1, 12, 2):
    print(x)

# 90,100,110,120,130
print('----------------------------------------')
for x in range(90, 140, 10):
    print(x)

# 9,8,7,6,5
print('----------------------------------------')
for x in range(9, 4, -1):
    print(x)

# 19, 16, 13
print('----------------------------------------')
for x in range(19, 10, -3):
    print(x)

# 2,1,0,-1,-2
print('----------------------------------------')
for x in range(2, -3, -1):
    print(x)

04while循环

1.while循环

1)语法:
while 条件语句:
循环体
2)执行过程:
先判断条件语句是否成立,如果成立就执行循环体,执行完循环再判断条件语句是否成立,成立就再执行循环体…以此类推,直到条件不成立循环结束。

例:使用while循环控制程序打印5次 ‘hello world!’
x = 0
while x < 5:
    print('hello world!')
    x += 1

建议:尽量不使用while循环(遇到循环问题的时候优先考虑for循环)

2.for和while的选择

遇到循环问题的时候优先考虑for循环,for循环解决不了的问题才使用while循环。
for循环无法解决的问题:
1)死循环
2)循环次数不确定(循环次数不由程序员决定,而是由使用这个程序用户的行为决定)

循环次数不确定的案例:写程序提示用户输入密码,直到输入的密码和系统保存的密码相同为止。
password = '123456'
pw = input('请输入密码:')
count = 0
while pw != password:
    pw = input('密码错误,请重新输入密码:')
    count += 1
    if count == 2:
        print('密码错误3次,请重置密码!')
        break
if pw == password:
    print('密码正确,登录成功!')

05continue和break

continue和break是循环关键字,只能在循环体中使用

1.continue - 结束一次循环

执行循环体的时候如果遇到了continue,当次循环结束,直接进入到下一次循环。

1,2,3,4,5,…,10
for x in range(1, 11):
    if x % 2 == 1:
        continue
    print(x)

2.break - 结束整个循环

执行循环体的时候如果遇到了break,整个循环直接结束(循环体剩下的部分不再执行,也不会进入下一次循环)

for x in range(1, 11):
    if x % 2 == 0:
        break
    print(x)

3.break的应用 - 当while遇到break

while True:
需要重复执行的操作
if 循环结束的条件:
break

例:写程序提示用户输入密码,直到输入的密码和系统保存的密码相同为止。
pw = '123123'
while True:
    value = input('请输入密码: ')
    if value == pw:
        break
练习:用程序实现猜数字游戏的功能

系统随机产生一个0~100的随机数:

print('练习----------------------------------------')
from random import randint
num = randint(0, 100)
count = 0
while True:
    value = int(input('猜的数:'))
    if count == 2:
        print('你猜错3次了,别猜了')
        break
    if value > num:
        print('猜大了!')
        count += 1
        continue
    if value < num:
        print('猜小了!')
        count += 1
        continue
    if value == num:
        print('猜对了!')
        break

06循环else

1.完整的循环结构

1)完整的for循环
for 变量 in 序列:
循环体
else:
代码段

2)完整的while循环
while 条件语句:
循环体
else:
代码段

2.循环else的作用

1)else的存在不影响原来循环的执行
2)如果前面的循环是正常结束(for把数据取完了导致循环结束; while循环的条件不成立导致循环>结束)的,else后面的代码段会在循环结束后执行;
如果前面的循环是因为遇到break而结束的,循环结束后不会执行else后面的代码段。

第一周作业20230310

一、选择题

  1. 下列变量名中不合法的是?(C)

    A. abc

    B. Npc

    C. 1name

    D ab_cd

  2. 下列选项中不属于关键字的是?(B)

    A. and

    B. print

    C. True

    D. in

  3. 下面哪个选项对应的代码写法是正确的?(C)

    A.

    print('Python')
      print('新手村')
    

    B.

    print('Python') print('新手村')
    

    C.

    print('Python')
    print('新手村')
    

    D.

    print('Python''新手村')
    
  4. 下面选项中能打印出50的是?B

    A.

    print('100 - 50')
    

    B.

    print(100 - 50)
    
  5. 关于引号,下面选项中使用正确的是?D

    A.

    print('hello)
    

    B.

    print("hello')
    

    C.

    print(“hello”)
    

    D.

    print("hello")
    

二、编程题

  1. 写代码在控制台打印 good good study, day day up!
print('good good study, day day up!')
  1. 写代码在控制台打印5次 you see see, one day day!
for x in range(5):
	print('you see see, one day day!')
  1. 写代码打印数字 11、12、13、… 21
for x in range(11, 22, 1):
    print(x)
  1. 写代码打印数字 11,13,15,17,…99
for x in range(11, 100, 2):
    print(x)
  1. 写代码打印数字:10、9、8、7、6、5
for x in range(10, 4, -1):
    print(x)
  1. 写代码计算:1+2+3+4+…+20 的和
sum_x = 0
for x in range(21):
    sum_x += x
print(sum_x)
  1. 写代码计算100以内所有偶数的和
sum_x = 0
for x in range(0,101,2):
    sum_x += x
print(sum_x)
  1. 写代码统计100~200中个位数是3的数的个数
count = 0
for x in range(100, 201):
    if x % 10 == 3:
        count += 1
print(count)
  1. 写代码计算2*3*4*5*...*9的结果
mul_x = 1
for x in range(2, 10):
    mul_x *= x
print(mul_x)
  1. 输入一个数,如果输入的数是偶数就打印偶数否则打印奇数
num = int(input('输个数:'))
if num % 2 == 0:
    print('偶数')
else:
    print('奇数')
  1. 统计1000以内能被3整除但是不能被5整除的数的个数。
count = 0
for x in range(1001):
    if x % 3 == 0 and x % 5 != 0:
        count += 1
print(count)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值