python name is not defined怎么解决_[Python基础]三、判断语句,循环

3.1 判断的定义

如果条件满足,才能做某件事;如果条件不满足,就做另外一件事,或者什么也不做。

用python将下面流程图翻译为伪代码:

d30f045ba9fcce0afa024f4b763c8ba7.png

解答:

db0d9022bf8098b59aed7668694ffa39.png

3.2 if语句的体验

3.2.1 if判断语句基本语法

在python中,if语句就是用来进行判断的,格式如下:

if 要判断的条件:
     条件成立时,要做的事情
     ......

注意:

  • 代码的缩进为一个tab键,或者4个空格,建议用空格
  • 在python中,缩进与空格不能混合用

练习:判断年龄

8783fcad5eea2bbda7d1ed203f6b26cb.png
# 1. 定义一个整数变量记录年龄
age = 26

# 2. 判断是否满了18岁
if age >= 18:
    # 3.如果满了18岁,可以进网吧嗨皮
    print("你已经成年了,欢迎进网吧嗨皮")

3.2.2 运算符

1482af460a5a38b64606f3fcda18e7a3.png

3.2.3 Pycharm使用的小技巧

f15c57de375e188763bc7756fabac99b.png

if else格式:

35ae05c13840b8111cbcbd6dd7e70f14.png

练习:判断年龄改进

b05599a33e22467ecf33e51e3c51ba03.png
# 输入用户年龄
age = int(input("请输入年龄:"))

# 判断是否满18岁
if age >= 18:
    # 如果满18岁,允许进网吧嗨皮
    print("你已经成年,欢迎进网吧嗨皮")
else:
    # 如果未满18岁,提示回家写作业
    print("你还没有成年,请回家写作业吧")

分析代码执行顺序:

条件成立时:

e10d7565d72250b9ab49ebb6b6423458.png

条件不成立时:

e5cd4b6abd2ab2f191f38358c43eb224.png

3.2.4 逻辑运算

逻辑运算符包括:与(and)、或(or)、非(not)三种

and(与):

条件1 and 条件2  #两个条件都成立时为True

or(或):

条件1 or 条件2  #两个条件有一个成立时为True,都不成立时为False

not(非):

not (条件) #条件为True时,为假

练习1:定义一个整数变量age,编写代码判断年龄是否正确,要求人的年龄在0-120之间

# 练习1:定义一个整数变量age,编写代码判断年龄是否正确
age = 120

# 要求人的年龄在0-120之间
if age >= 0 and age <= 120:
    print("年龄正确")
else:
    print("年龄不正确")

练习2:定义两个整数变量python_score、c_score,编写代码判断成绩,要求只要有一门成绩大于60就算合格。

# 练习2:定义两个整数变量python_score、c_score,编写代码判断成绩
python_score = 80
c_score = 75

# 要求只要有一门成绩大于60就算合格
if python_score > 60:
    print("考试通过")
else:
    print("考试失败")

练习3:定义一个布尔型变量,is_employee,编写代码判断是否是本公司员工,要求如果不是提示不允许入内。

# 练习3:定义一个布尔型变量,is_employee,编写代码判断是否是本公司员工
is_employee = True

# 要求如果不是提示不允许入内
if not is_employee:
    print("非本公司人员,请勿入内")

3.2.5 if语句进阶

在开发中,使用if可以判断条件,使用else可以处理条件不成立的情况,但是希望再增加一些条件,条件不同,需要执行的代码也不同,就可以使用elif。

语法格式:

031aee9b2f4ef58b4626775f4bc4fcdd.png

练习:女友的节日

需求:

  • 定义holiday_name字符串变量记录节日名称
  • 如果是情人节,应该买玫瑰/看电影
  • 如果是平安夜,应该买苹果/吃大餐
  • 如果是生日,应该买蛋糕
  • 其他的日子每天都是节日啊...
#定义holiday_name字符串变量记录节日名称
holiday_name = "情人节"

#如果是情人节,应该买玫瑰/看电影
if holiday_name == "情人节":
    print("买玫瑰/看电影")

#如果是平安夜,应该买苹果/吃大餐
elif holiday_name == "平安夜":
    print("买苹果/吃大餐")
    
#如果是生日,应该买蛋糕
elif holiday_name == "生日":
    print("买蛋糕")
#其他的日子每天都是节日啊...
else:
    print("每天都是节日啊...")

3.2.6 if的嵌套

elif应用的场景是:同时判断多个条件,所有条件是平级的

if的嵌套的应用场景:在之前条件满足的前提下,在增加额外的判断。

语法格式:

3190f8ed1c4595f9826b062921aa32a6.png

练习:火车站的安检

需求:

  • 定义布尔型变量,has_ticket表示是否有车票
  • 定义整型变量knife_length表示到的长度,单位:厘米
  • 首先检查是否有车票,如果有,才允许进行安检
  • 安检时,需要检查刀的长度,判断是否超过20厘米
  • 如果超过20厘米,提示刀的长度,不允许上车
  • 如果不超过20厘米,安检通过
  • 如果没有车票,不允许进门
# 定义布尔型变量,has_ticket表示是否有车票
has_ticket = True

# 定义整型变量knife_length表示到的长度,单位:厘米
knife_length = 30

# 首先检查是否有车票,如果有,才允许进行安检
if has_ticket:
    print("车票检查通过,准备开始安检")

    # 安检时,需要检查刀的长度,判断是否超过20厘米
    if knife_length > 20:

         # 如果超过20厘米,提示刀的长度,不允许上车
        print("您携带的刀太长了,有%d公分长!"%knife_length)
        print("不允许上车")
    else:
        #如果不超过20厘米,安检通过
        print("安检通过,祝您旅途愉快")
    # 如果没有车票,不允许进门
else:
    print("大哥,请先买票")

综合应用—石头剪刀布

需求:

  • 从控制台输入要出的拳—石头(1)/剪刀(2)/布(3)
  • 电脑随机出拳—先假定电脑只会出石头,完成整体代码功能
  • 比较胜负

1e812a63462363672281d0e0aa9021a0.png
# 从控制台输入要出的拳—石头(1)/剪刀(2)/布(3)
player = int(input("请输入您要出的拳—石头(1)/剪刀(2)/布(3):"))

# 电脑随机出拳—先假定电脑只会出石头,完成整体代码功能
computer = 1
print("玩家选择的拳头是 %d-电脑出的拳是 %d:"%(player,computer))
# 比较胜负
# 1 石头 胜 剪刀
# 2 剪刀 胜 布
# 3 布 胜 石头
if ((player == 1 and computer == 2)
        or (player == 2 and computer == 3)
        or (player == 3 and computer == 1)):

    print("欧耶,电脑弱爆了!")
#平局
elif player == computer:
    print("真是心有灵犀啊,再来一盘吧!")
#其他的情况就是电脑获胜
else:
    print("不服气,我们决战到天明!")

3.2.7 随机数的处理

在python中,要使用随机数,首先要导入随机数的模块—“工具包”

import random

fa6236701086e725d2ba4df09e511e7b.png

random.randint(a,b) #返回一个整数,包含a和b

改进综合练习—石头剪刀布:

#导入随机工具包
import random
# 从控制台输入要出的拳—石头(1)/剪刀(2)/布(3)
player = int(input("请输入您要出的拳—石头(1)/剪刀(2)/布(3):"))

# 电脑随机出拳—先假定电脑只会出石头,完成整体代码功能
computer = random.randint(1,3)
print("玩家选择的拳头是 %d-电脑出的拳是 %d:"%(player,computer))
# 比较胜负
# 1 石头 胜 剪刀
# 2 剪刀 胜 布
# 3 布 胜 石头
if ((player == 1 and computer == 2)
        or (player == 2 and computer == 3)
        or (player == 3 and computer == 1)):
    print("欧耶,电脑弱爆了!")
#平局
elif player == computer:
    print("真是心有灵犀啊,再来一盘吧!")
#其他的情况就是电脑获胜
else:
    print("不服气,我们决战到天明!")

3.3 循环

程序的三大流程:

  • 顺序:从上向下,顺序执行代码
  • 分支:根据条件判断,决定执行代码的分支
  • 循环:让特定代码重复执行

272878be39848264122399a66047028b.png

3.3.1 while循环基本使用

基本语法:

3100fefd7b76bf0c80f1ca6a05e2d82a.png

例子:打印5遍Hello Python

#打印5遍Hello Python
#1.定义一个整数变量,记录循环次数
i = 1

#2.开始循环
while i <= 5:
    # 1>处理计数器
    print("Hello Python")
    i = i + 1

3.3.2 赋值运算符

b63b5d2cec1a9e22b337e582657535bc.png

3.3.3 Python中的计数方法

程序计数都是从0开始的。所以程序员应该早点养成从0计数的习惯。

3.3.4 循环计算

开发中,遇到利用循环重复计算的需求,可以:

  1. 在while上方定义一个变量,用于存放最终计算结果
  2. 在循环内部,每次循环都用最新的计算结果,更新之前定义的变量

例子1:

  • 计算0-100之间所有数字的累计求和结果
# 计算0-100之间所有数字的累计求和结果
#0.定义最终结果的变量
result = 0

# 1.定义一个整数变量记录循环的次数
i = 0

# 2.开始循环
while i <= 100:
    #处理计算器
    #每一次循环,都让result这个变量和i这个计数器相加
    result += i
    i += 1
print(result)

例子2:累计求和进阶

  • 计算0-100之间所有偶数的累计求和结果

开发步骤:

  1. 编写循环确认要计算的数字
  2. 添加结果变量,在循环内部处理计算结果
# 计算0-100之间所有偶数的累计求和结果
# 开发步骤:
# 1.编写循环确认要计算的数字
# 2.添加结果变量,在循环内部处理计算结果
# 1>定义一个记录最终结果的变量
result = 0

i = 0

while i <= 100:
    #判断变量i中的数值,是否是一个偶数
    #i % 2 ==0
    if i % 2 == 0:
        result += i
    i += 1
print("0-100之间偶数累加结果=%d" %result)

3.3.5 break和continue

break和continue是专门在循环中使用的关键字

  • break某一条件满足时,退出循环,不在执行后续重复的代码
  • continue某一条件满足时,不执行后续重复的代码

break和continue只针对当前所在循环有效

b15fa9820d59f1066b48d09a0fd6167f.png

案例:break案例

i = 0
while i < 10:
    #break 某一条件满足时,退出循环,不在执行后续重复代码
    #i==3
    if i == 3:
        break
    print(i)
    i += 1
print("over")

结果:

e98edd28cb52295b20816db201ff2357.png

案例:continue案例

i = 0
while i < 10:
    #continue 某一个条件满足时,不执行后续重复代码
    # i == 3
    if i == 3:
        #注意:在循环中,如果使用continue这个关键字
        #在使用关键字之前,需要确认循环的计数是否修改
        #否则可能会导致死循环
        i += 1
        continue

    print(i)
    i += 1

结果:

c55034951886ea84f0ff262170c68321.png

3.3.6 while循环嵌套

while嵌套就是:while里面还有while

135a1fad643d325da7c2cb6dd63dc564.png

练习1:在控制台连续输出五行*,每一行星号的数量依次递增

# 1.定义一个计数器变量,从数字1开始,循环会比较方便
row = 1

#2.开始循环
while row <= 5:
    print("*"*row)
    row += 1

结果:

51041c40d239755dc5f68602d01f7c3d.png

补充知识点:

对print函数的使用的补充

  • 在默认情况下,print函数输出内容之后,会自动在内容末尾增加换行
  • 如果不希望末尾增加换行,可以在print函数输出内容的后面增加,end=""
  • 其中,""中间可以指定print函数输出内容之后,会自动在末尾增加换行

例子1:

print("*")
print("***")

结果

d780b8bfba61774a9968d28a54601bdf.png

例子2:

print("*",end="---")
print("***")

结果

49b33c397dfe83683185a1e76ec54516.png

练习2:在控制台连续输出五行*,每一行星号的数量依次递增(用while循环)

1a995725473210177bd2841089fbb933.png
#1>完成5行内容的简单输出
#2>分析每行内部的*应该如何处理

row = 1

while row <= 5:
    #每一行打印的星星和当前行一致
    col = 1
    while col <= row:
        print("*",end="")
        col += 1
    print("*")
    row += 1

练习:九九乘法表

d29c9ccc725fc3a9f1efe712f29f5cf0.png

开发步骤:

1.打印9行小星星

29f575edb9d62e763353f632971aa867.png

完成第一步:

#1.打印9行小星星
row = 1
while row <= 9:
    col = 1
    while col <= row:
        print("*", end="")
        col += 1
    print("")
    row += 1

2.将每一个*换成元素

#1.打印9行小星星
row = 1
while row <= 9:
    col = 1
    while col <= row:
        #print("*", end="")
        print("9*9=81", end=" ")#end后是空格
        col += 1
    print("")
    row += 1

结果:

17a5af3bd7f4f017eff986f26cd96a59.png

修改行号:

row = 1
while row <= 9:
    col = 1
    while col <= row:
        #print("*", end="")
        print("9*%d=81" %row, end=" ")
        col += 1
    print("")
    row += 1

结果:

40351ebfdf7dd6399281809de385180d.png

最终结果:

row = 1
while row <= 9:
    col = 1
    while col <= row:
        #print("*", end="")
        print("%d*%d=%d" %(col,row,col*row), end=" ")
        col += 1
    print("")
    row += 1

结果:

843a863f07d87576a66f57d750b2402d.png

补充知识:字符串中的转义字符

4c10f37b7e787ecccd9e4085d0ccdbfc.png
#t在控制台输出一个制表符,使得在输出文本时垂直方向对齐
print("1t2t3")
print("10t20t30")
#n在控制台输出一个换行符
print("helonhello")

结果:

1f8be1cfcf9a83d977dd4b840d0b8497.png

改进九九乘法表:

row = 1
while row <= 9:
    col = 1
    while col <= row:
        #print("*", end="")
        print("%d*%d=%d" %(col,row,col*row), end="t")
        col += 1
    print("")
    row += 1

结果:

8ae9289b46b23938fee4c1c23516a8ae.png

版权声明:本文为weixin_39825105原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。