03.Python基础--控制流语句-顺序结构-判断结构-循环语句

1.控制流语句

顺序语句

  • 从左到右, 从上到下

1.1 if条件判断

计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。
比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现:
方法一
if <条件判断表达式>:
<当上面的代码成立时,运行代码>

根据Python的缩进规则,如果if语句判断是True,就把缩进的两行print语句执行了,否则,什么也不做。

也可以给if添加一个else语句,意思是,如果if判断是False,不要执行if的内容,去把else执行了:

age = 20
if age >= 18:
    print('your age is', age)
    print('adult')   
     
your age is 20
adult
1
a = 1
# 只要看到if 了 , 就是进入  分支语句
# if 后面 判断表达式  
# 判断表达式后面  冒号:
if a < 0:
    print(1)    
    
print(2)2
a = 1
if a == 2:
    print(1)
else:
    print('不成立')
    
print('后面的代码')

方法二

if <条件判断表达式>:
<当上面的代码成立时,运行代码>
else:
<当上面代码不成立时,运行代码>

a = 1
if a == 2:
    print(1)
else:
    print('不成立')
不成立

方法三

elif是else if的缩写,完全可以有多个elif,所以if语句的完整形式就是:
所以if语句的完整形式就是:

if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>

else:
<执行4>

age = 20
if age >= 6:
    print('teenager')
elif age >= 18:
    print('adult')
else:
    print('kid')
    
teenager

案例

# 1 - 4 岁  婴儿
# 4 - 18 岁  儿童
# 18 - 35 青年
# 35 - 55 中年
# 55 以上  老年
age = int(input('请输入您的年龄'))
if age <= 4:
    print('你是一个小baby')
elif age <= 18:
    print('你还未成年,不能去网吧')
elif age <= 35:
    print('你已经成年了, 可以去网吧玩游戏了')
elif age <= 55:
    print('你是一个中年人了, 不需要去网吧了')
else:
    print('您是一个老年人, 和网吧没有关系了')
    
请输入您的年龄1
你是一个小baby

1.1.1 布尔类型和其他数据类型之间的转换关系

所有空值、0为假,其他为真

bool(0)
bool([])
bool(‘’)
都是返回为假false

1.1.2 if 嵌套

if嵌套

通过学习if的基本用法,已经知道了

当需要满足条件去做事情的这种情况需要使用if
当满足条件时做事情A,不满足条件做事情B的这种情况使用if-else
想一想:

坐火车或者地铁的实际情况是:先进行安检如果安检通过才会判断是否有车票,或者是先检查是否有车票之后才会进行安检,即实际的情况某个判断是再另外一个判断成立的基础上进行的,这样的情况该怎样解决呢?

答:

if嵌套

if嵌套的格式

 if 条件1:

        满足条件1 做的事情1
        满足条件1 做的事情2
        ...(省略)...

        if 条件2:
            满足条件2 做的事情1
            满足条件2 做的事情2
            ...(省略)...

# 先检票 , 如果有票, 则进站
# 如果没票, 不能进站
# 如果成功进站了, 进行安检
# 如果没有危险物品, 则可以上车
# 如果有危险物品, 被抓到派出所
ticket = True
danger_thing = True
if not danger_thing:
    print('没有危险物品可以进站')
    if ticket:
        print("恭喜上车")
    else:
        print('请出去')
else:
    print('请跟我走一趟')

练一练

情节描述:上公交车,并且可以有座位坐下

要求:输入公交卡当前的余额,只要超过2元,就可以上公交车;如果空座位的数量大于0,就可以坐下

money = float(input('请输入公交卡的钱:'))
setting = float(input('请输入座位数:'))

if money >= 2:
    print('可以上车')
    if setting >= 1:
        print('请坐下')
    else:
        print('请站着')
else:
    print('请下车')
    请输入公交卡的钱:2
请输入座位数:3
可以上车
请坐下

补充:
and not or的优先级
or<and<not

1.1.3 列表

当我们有一百个变量要储存起来的时候,总不能弄一百个变量啊,怎么办的,用列表.
我们可以对列表这样去理解, 就把它当成一个大桶, 当我们有一堆东西需要找个地方临时存放在一起, 以便后续进行排序, 筛选,提取等操作时, 就弄一个列表, 先放进去.
列表中的元素,没有数据类型的限制,可以为任何数据类型

s = [1,2,3,4,5,6,7,8,9,10]
list1 = [1, 2, 3,'on','go',True,False,None]
s2 = ['临','兵','斗','者','皆','列','阵','在','前']

1.2 循环语句

循环语句的使用场景

这一天老师让你抄写一百遍"我错了"
for循环

for循环
 for i in range(100):
 	print("我错了")

while循环

i = 0
while i <= 100:
	print("我错了")
	i +=  1

1.2.1 for循环

for循环和编程语言中常见的循环不太一样,它实际上不是一个循环,而是一个遍历功能,会依次对一个可迭代的数据中的每一个数据进行操作.

在Python中 for循环可以遍历任何序列的项目,如一个列表或者一个字符串等。

for循环的格式

    for 临时变量 in 列表或者字符串等:
        循环满足条件时执行的代码

range的使用
range(数字)表示生成0-多少的数组

# 例:list(range(10))表示生成0到9的数
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

range(a,b)表示生成a到b的数

# 例:list(range(10,20))表示生成10到19的数
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

range(a,b,c)表示生成a到b的数,间距为c

# 例:list(range(10,20,2))表示生成10到20的偶数
[10, 12, 14, 16, 18]

利用for 循环实现1到100的累加

# 先定一个累加器
n = 0
for i in range(1, 101):
    
    # 每次把遍历出来的i 的值  累加到 n 上面去
    n += i 
n

1.2.2 whlie循环

while 条件表达式:
        条件满足时,做的事情1
        条件满足时,做的事情2
        条件满足时,做的事情3
        ...(省略)...

案例1

i = 0
while i<5:
    print("当前第{}次执行循环".format(i+1))
    print('i={}'.format(i))
    i += 1
    
当前第1次执行循环
i=0
当前第2次执行循环
i=1
当前第3次执行循环
i=2
当前第4次执行循环
i=3
当前第5次执行循环
i=4

案例2

s = "也可以使用while循环对字符串进行遍历,不过就需要配合字符串的索引功能了"
i = 0
while i < len(s):
    print(s[i])
    
    i += 1
也
可
以
使
用
w
h
i
l
e
循
环
对
字
符
串
进
行
遍
历
,
不
过
就
需
要
配
合
字
符
串
的
索
引
功
能
了

1.2.3打印-1到-20中所有3的倍数

i = -1
while i >=-20:
    if i%3 == 0:
        print(i)
    i -= 1
    
-3
-6
-9
-12
-15
-18

对数字0 每次 加 7 , 然后把这个数字打印出来

一直运行到 这个数字是 100的倍数 停止

i = 0
while (not(i%100 == 0)) or (i == 0):
    print(i)
    i += 7
0
7
14
21
28
35
42
49
56
63
70
77
84
91
98
105
112
119
126
133
140
147
154
161
168
175
182
189
196
203
210
217
224
231
238
245
252
259
266
273
280
287
294
301
308
315
322
329
336
343
350
357
364
371
378
385
392
399
406
413
420
427
434
441
448
455
462
469
476
483
490
497
504
511
518
525
532
539
546
553
560
567
574
581
588
595
602
609
616
623
630
637
644
651
658
665
672
679
686
693

1.2.4 break退出本"层"循环

遇到break相当于推出本层循环

name = '我想要去打游戏,不想学习'
for i in name:
    if i == ',':
        break
    print(i)
    
我
想
要
去
打
游
戏

1.2.5 continue结束本"次"循环

continue的作用:用来结束本次循环,紧接着执行下一次的循环

name = '我想要去打游戏,不想学习'
for i in name:
    # 如果遇到了逗号, 就不打印了
    if i == ',':
        continue
    
    print(i)

我
想
要
去
打
游
戏
不
想
学
习

注意:

break/continue只能用在循环中,除此以外不能单独使用

break/continue在嵌套循环中,只对最近的一层循环起作用

1.2.6 练习 寻找水仙花数

题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
方法一

# 水仙花数
for i in range(100,1000):
    a = i // 100
    b = i // 10%10
    c = i % 10
    if i == (a**3+b**3+c**3):
        print(i)
    
    153
370
371
407

方法二

for i in range(100,1000):
    s = str(i)
    a = s[0]
    b = s[1]
    c = s[2]
    if int(a)**3 + int(b)**3 + int(c)**3 == i:
        print(i)
153
370
371
407
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值