Python基础 条件语句 & 循环语句

学习目标

今天的学习目标和学习内容很简单,学习的是条件语句和循环语句。
条件语句则有:

  • if
  • if - else
  • if - elif - else
    循环语句则分为了while循环和for循环:
  • while
  • while - else
  • for
  • for - else

首先,我们先学习下条件语句的相关用法

条件语句

if 语句

if,英文就是如果,如果xxxx怎么怎么样,就去干啥啥啥。

if expression:
	expr_true_suite

简单来说,只有当expression为真时,这条语句才会执行,否则便会跳过改代码块,执行后面的代码。

多重条件判断

可以用布尔操作符实现多重条件判断,and、or和and

if 2 > 1 and not 2 > 3:
	print('Correct Judgement!')	

If - else 语句

if expression:
    expr_true_suite 
else
	expr_false_suite

可以直接通过解读便可以知道这个代码块的含义:如果expression为真,则执行expr_true_suite;否则执行expr_false_suite。举个例子

temp = input("猜一猜小姐姐想的是哪个数字?")
guess = int(temp) # input 函数将接收的任何数据类型都默认为 str。 
if guess == 1:
    print("你太了解小姐姐的心思了!")
    print("哼,猜对也没有奖励!")
else:
    print("猜错了,小姐姐现在心里想的是你(1)!")
print("游戏结束,不玩儿啦!")

如果你输入的是1就可以得到:

猜一猜小姐姐想的是哪个数字?1
你太了解小姐姐的心思了!
哼,猜对也没有奖励!
游戏结束,不玩儿啦!

如果不是1,则会是:

猜一猜小姐姐想的是哪个数字?520
猜错了,小姐姐现在心里想的是你(1)!
游戏结束,不玩儿啦!

另外,if语句可以嵌套if语句,但如果针对大型数据集来说,重复的嵌套会增加运行的时间。下面是一个简单的嵌套。

hi = 6
if hi > 2:
    if hi > 7:
    	print('好棒!好棒!')
elseprint('切~')

这里需要注意的是,不要忘记缩进原则,else与哪一个if对应,就要与其有相同的缩进。下面的是一个例子。

temp = input("不不妨猜下小哥哥现在⼼心⾥里里想的是那个数字:") 
guess = int(temp)
if guess > 8:
    print("大了,⼤了")
else:
    if guess == 8:
    	print("你这么懂小哥哥的⼼思吗?") 
    	print("哼,猜对也没有奖励!")
    elseprint("⼩了,⼩了") 
print("游戏结束,不玩儿啦!")

if - elif - else 语句

简称elif语句,是用来判断多个表达式是否为真。

temp = input('请输⼊入成绩:') 
source = int(temp)
if 100 >= source >= 90:
    print('A')
elif 90 > source >= 80:
    print('B')
elif 80 > source >= 60:
    print('C')
elif 60 > source >= 0:
    print('D')
else:
    print('输⼊入错误!')

assert 关键词

为了检查我们的写的语句是否正确,我们可以在每个语句后面加一个assert,只有语句为真时,程序才能正常运行,否则程序会自动终止,并显示AssertionError

循环语句

while 语句

while循环的基本结构就是:

while 布尔表达式:
	代码块

它会一直循环执行代码块,直到布尔表达式为假时才会停止。举个例子

count = 0
while count < 3:
    temp = input("不妨猜⼀下⼩哥哥现在⼼里想的是那个数字:")     
    guess = int(temp)
    if guess > 8:
		print("⼤了,⼤了")
    else:
		if guess == 8:
			print("你是小哥哥心⾥里的蛔虫吗?") 
			print("哼,猜对也没有奖励!") 
			count = 3
		elseprint("小了,⼩了")
    count = count + 1 
print("游戏结束,不不玩⼉儿啦!")

执行之后可以得到下面的结果,填写的是8:

不妨猜下哥哥现在想的是那个数字:8

你是小哥哥心里的蛔虫吗?
哼,猜对也没有奖励!
游戏结束,不玩儿啦!

猜错3次之后会自动跳出循环:

不妨猜下哥哥现在想的是那个数字:1
小了小了

不妨猜下哥哥现在想的是那个数字:2
小了小了

不妨猜下哥哥现在想的是那个数字:3
小了小了
游戏结束,不玩儿啦!

while - else 语句

while 布尔表达式:
	代码块
else:
	代码块

当while语句执行完后便会去执行else语句中的代码块,但如果while中含有break关键词(终止),则不会继续执行else而是直接跳出循环。

for 循环

for循环是迭代循环,可以遍历任何有序序列和迭代对象。比如str、list、tuple、dict等。

for 迭代变量 in 可迭代对象:
	代码块 

每次循环,迭代变量被设置为可迭代对象的当前元素,举个例子

member = ['张三', '李四', '刘德华', '刘六', '周润发'] 
for each in member:
    print(each)
# 结果
# 张三
# 李四
# ...

for i in range(len(member)):
    print(member[i])

# 结果同上

for - else 循环

原理与while - else语句相同,执行完for中的代码块后,才会执行else中的代码块。

range()函数

range函数

range([start,] stop[, step=1])

举个例子就明白了

for i in range(2, 9):  # 不不包含9
    print(i)	

结果为:
range()结果
range()函数是一个左开右闭的函数,即从2开始一直输出到9(但不包括9)

for i in range(1, 102):  # 不不包含9
    print(i)
 # 得到的结果将会是
 # 1 3 5 7 9	

表示的是从1开始每过2位输出一次,直到10

enumerate()函数

enumerate(sequence, [start = 0])

sequence指的是一个序列、迭代器或者其他的迭代对象。而start表示下标起始位置。
举两例子。

seasons = ['Spring', 'Summer', 'Fall', 'Winter']
lst = list(enumerate(seasons))
print(lst)
# [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] 
lst = list(enumerate(seasons, start=1))  # 下标从 1 开始
print(lst)
# [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
languages = ['Python', 'R', 'Matlab', 'C++'] for language in languages:
    print('I love', language)
print('Done!')

'''
I love Python
I love R
I love Matlab
I love C++
Done!
'''
for i, language in enumerate(languages, 2):
    print(i, 'I love', language)
print('Done!')
'''
2 I love Python
3 I love R
4 I love Matlab
5 I love C++
Done!

'''

从第二个例子可以看出,用enumerate不仅可以返回函数中的元素,还可以顺便给该元素一个索引值(默认值从0开始)。此外,用enumerate(A,j)还能确定索引起始值为j

break & continue & pass 语句

break语句就是用来跳出当前所在层的循环。
continue语句就是用来终止本轮循环并开始下一轮循环
pass语句表示的是“不做任何事”,如果你在需要有语句的地方不写任何语句,那么解释器会报错,这时候就可以添加pass来解决。

推导式

推导式分为了列表推导式元组推导式

列表推导式

[ expr for value in collection [if condition] ]

举个例子

x = [-4, -2, 0, 2, 4] 
y = [a * 2 for a in x] 
print(y)
# [-8, -4, 0, 4, 8]

x = [i ** 2 for i in range(1, 10)] 
print(x)
# [1, 4, 9, 16, 25, 36, 49, 64, 81]

x = [[i, j] for i in range(0, 3) for j in range(0, 3)]
print(x)
# [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]

元组推导式

( expr for value in collection [if condition] )

example:

a = (x for x in range(10))
print(a)
# <generator object <genexpr> at 0x0000025BE511CC48>
print(tuple(a))
# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

字典推导式

{ key_expr: value_expr for value in collection [if condition] }

example:

b = {i: i % 2 == 0 for i in range(10) if i % 3 == 0} print(b)
# {0: True, 3: False, 6: True, 9: False}

集合推导式

{ expr for value in collection [if condition] }

Example

c = {i for i in [1, 2, 3, 4, 5, 5, 6, 4, 3, 2, 1]} print(c)
# {1, 2, 3, 4, 5, 6}

Q & A

  1. 编写一个python程序来查找那些可以被7除以5的整数数字,介于1500-2700之间
t = 1500
for i in range(1500, 2700): 
    if i % 7 == 0 and i % 5 ==0:
        print(i)
        t +=1
  1. 龟兔赛跑预测
v1,v2,t,s,l = map(int,input().split())
if v1<=100 and v2<=100 and t<=300 and s<=10 and l<=10000 and l%v1==0 and l%v2==0:
    s1,s2,i = 0,0,0
    while s1<l and s2<l:
        s1,s2,i=v1+s1,v2+s2,i+1
        if s1==l or s2==l:
            break
        elif s1-s2>=t:
            s2,i=s2+v2*s,i+s
    if s1>s2:
        print('R')
        print(i)
    if s1==s2:
        print('D')
        print(i)
    if s1<s2:
        print('T')
        print(int(l/v2))

参考

[1] Datawhale. 《python编程语言_v4》
[2] 基础练习23- 龟兔赛跑预测(python答案)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pigou_

谢谢老板!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值