1. 条件判断语句

条件控制语句用于根据条件来决定程序的执行路径。在Python中,常见的条件控制语句有以下几种:

(1)if语句:用于执行满足条件的代码块。示例代码:

age = 20
if age >= 18:
    print("成年人")

(2)if-else语句:在满足条件时执行一个代码块,否则执行另一个代码块。

# if-else语句
# 语法: 
#   if 条件表达式 :
#       代码块
#   else :
#       代码块
# 执行流程:
#   if-else语句在执行时,先对if后的条件表达式进行求值判断
#       如果为True,则执行if后的代码块
#       如果为False,则执行else后的代码块

示例代码:

age = 16
if age >= 18:
    print("成年人")
else:
    print("未成年人")

(3)if-elif-else语句:在满足多个条件时执行不同的代码块。

# if-elif-else语句
# 语法:
#   if 条件表达式 :
#       代码块
#   elif 条件表达式 :
#       代码块
#   elif 条件表达式 :
#       代码块
#   elif 条件表达式 :
#       代码块
#   else :
#       代码块
#       
# 执行流程:
#   if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,
#       如果表达式的结果为True,则执行当前代码块,然后语句结束
#       如果表达式的结果为False,则继续向下判断,直到找到True为止
#       如果所有的表达式都是False,则执行else后的代码块
#   if-elif-else中只会有一个代码块会执行

示例代码:

score = 85
if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
elif score >= 60:
    print("及格")
else:
    print("不及格")

以上是常见的条件控制语句,它们根据条件的真假来决定执行哪个代码块。你可以根据实际需求选择合适的条件控制语句,它们可以帮助你根据不同的条件执行不同的操作。

(4)嵌套条件控制语句:在一个条件控制语句内部嵌套另一个条件控制语句,可以处理更复杂的条件逻辑。 示例代码:

x = 10
y = 5
if x > 0:
    if y > 0:
        print("x和y都大于0")
    else:
        print("x大于0,但y小于等于0")
else:
    print("x小于等于0")

(5)真值表达式:在条件控制语句中,除了使用具体的布尔值(True或False)作为条件外,还可以使用其他类型的值作为条件。在Python中,以下值被视为假(False):False、None、数值0(如0、0.0)、空的序列(如空列表、空元组、空字符串)。 示例代码:

x = []
if x:
    print("x不为空")
else:
    print("x为空")

(6)条件表达式的短路求值:在逻辑运算符中,当条件表达式的结果已经确定时,后面的条件表达式不会再被计算。这种机制称为短路求值。 示例代码:

x = 5
y = 0
if x > 0 and y > 0:  # 由于x不大于0,后面的条件表达式y > 0不会被计算
    print("x和y都大于0")
else:
    print("至少有一个小于等于0")

当需要判断多个条件是否满足时,可以使用逻辑运算符来组合条件表达式。

(7)多个条件都满足:使用逻辑运算符and来连接多个条件,只有当所有条件都为真时,整个条件表达式才为真。 示例代码:

age = 25
score = 90
if age > 18 and score > 80:
    print("年龄大于18且分数大于80")

(8)多个条件有一个满足:使用逻辑运算符or来连接多个条件,只要有一个条件为真,整个条件表达式就为真。 示例代码:

is_sunny = True
is_warm = False
if is_sunny or is_warm:
    print("天晴或气温温暖")

这样,你可以根据实际需求编写条件判断语句,同时考虑多个条件的组合关系。使用逻辑运算符andor可以根据不同的逻辑需求,对多个条件进行合适的判断。

2. input函数

input()函数用于从用户处获取输入,并将用户输入的内容作为字符串返回。它可以用于与用户进行交互,接收用户的输入并根据输入进行相应的处理。

使用input()函数的一般语法为:

variable = input(prompt)

其中,prompt是一个可选的字符串参数,用于向用户显示提示信息,告诉用户需要输入什么内容。

示例代码:

name = input("请输入您的姓名: ")
print("您好," + name + "!")

在上面的示例中,用户输入姓名后,input()函数会将输入的内容作为字符串返回,并将其赋值给变量name。然后,程序会打印出"您好,"加上用户输入的姓名。

需要注意的是,input()函数返回的是字符串类型。如果需要将输入的内容解析为其他数据类型(如整数、浮点数等),可以使用类型转换函数进行转换,例如int()float()等。

示例代码:

age = input("请输入您的年龄: ")
age = int(age)  # 将输入的年龄转换为整数类型
print("您的年龄是 " + str(age) + " 岁。")

在上面的示例中,我们将用户输入的年龄转换为整数类型,并将其存储在变量age中。然后,程序会打印出年龄信息。

通过使用input()函数,你可以与用户进行交互,获取用户的输入,并根据输入进行相应的处理。这在编写交互式程序或需要用户输入数据的情况下非常有用。

3. 循环语句

循环语句是在程序中重复执行一段代码的一种结构。在Python中,常见的循环语句有两种:for循环和while循环。

(1)for循环:用于遍历可迭代对象(如列表、元组、字符串等)中的元素,按照顺序逐个处理。 示例代码:

fruits = ['apple', 'banana', 'orange']
for fruit in fruits:
    print(fruit)

(2)while循环:在满足一定条件的情况下,重复执行一段代码,直到条件不满足时退出循环。 示例代码:

count = 0
while count < 5:
    print("Count: ", count)
    count += 1

除了上述两种常见的循环语句,还有一些控制循环的关键字可以使用:

  • break:用于立即退出当前循环,不再执行后续的循环迭代。 示例代码:
# for循环
numbers = [1, 2, 3, 4, 5]
for number in numbers:
    if number == 3:
        break
    print(number)

# while循环
i = 0
while i < 5:
    i += 1
    if i == 3:
        break  # 当 i 等于 3 时,提前结束循环,跳出循环体
    print(i)
  • continue:用于跳过当前循环迭代,继续执行下一次迭代。 示例代码:
# for循环
numbers = [1, 2, 3, 4, 5]
for number in numbers:
    if number == 3:
        continue
    print(number)

# while循环
i = 0
while i < 5:
    i += 1
    if i == 3:
        continue  # 当 i 等于 3 时,跳过本次循环的剩余代码,直接进入下一次循环
    print(i)

通过循环语句,你可以根据需要重复执行一段代码,遍历数据集合或在满足条件的情况下执行特定的操作。循环语句是编程中非常重要的一部分,可以提高代码的灵活性和效率。

(3)while-else循环:Python 的 while 循环语句可以搭配 else 关键字使用。这个 else 块会在 while 循环正常执行完毕(即循环条件为假)时执行,但如果循环中使用了 break 语句提前结束了循环,则不会执行该 else 块。

示例代码:

count = 0
while count < 5:
    print("Count:", count)
    count += 1
else:
    print("循环结束")

在上述示例中,当 count 小于 5 时,循环会一直执行,每次输出当前的 count 值。当 count 达到 5 时,循环条件为假,循环正常结束,此时会执行 else 块并输出"循环结束"。如果在循环过程中使用了 break 语句提前结束循环,那么 else 块将不会被执行。

4. 练习

(1)求100以内所有的奇数之和

sum = 0  # 记录奇数之和的变量
number = 1  # 初始值为1

while number <= 100:
    if number % 2 != 0:  # 判断是否为奇数
        sum += number  # 如果是奇数,累加到奇数之和变量中
    number += 1  # 增加数值继续下一次循环

# 输出结果
print("100以内所有奇数之和为:", sum)

输出结果为:

100以内所有奇数之和为: 2500

使用while循环,通过一个计数变量number来逐个判断数值是否为奇数,并将奇数累加到sum变量中,直到number超过100时结束循环。最后输出结果为100以内所有的奇数之和,即2500。

(2)求100以内所有的奇数之和

sum = 0  # 记录奇数之和的变量

# 循环1到100的数字
for i in range(1, 101):
    if i % 2 != 0:  # 判断是否为奇数
        sum += i  # 如果是奇数,累加到奇数之和变量中

# 输出结果
print("100以内所有奇数之和为:", sum)

输出结果为:

100以内所有奇数之和为: 2500

因此,100以内所有的奇数之和为2500。

(3)求1000以内所有的水仙花数

水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1**3 + 5**3 + 3**3 = 153)。

# 获取1000以内的三位数
i = 100
while i < 1000:

    # 假设,i的百位数是a,十位数b,个位数c
    # 求i的百位数
    a = i // 100
    # 求i的十位数
    # b = i // 10 % 10
    b = (i - a * 100) // 10
    # 求i的个位数字
    c = i % 10
    # print(i , a , b , c)
    
    # 判断i是否是水仙花数
    if a**3 + b**3 + c**3 == i :
        print(i)
    i += 1

输出结果为:

153
370
371
407

***Repl Closed***

5. 小游戏

5.1 猜数字小游戏

import random

print('-'*20, '欢迎来到猜数字游戏', '-'*20)

number = random.randint(1, 100)  # 随机生成一个1到100的数字

guess = 0
count = 0

while guess != number:
    guess = int(input('请输入你猜测的数字(1-100):'))
    count += 1

    if guess < number:
        print('猜小了!')
    elif guess > number:
        print('猜大了!')
    else:
        print(f'恭喜你猜对了!答案是{number},你一共猜了{count}次。')

        play_again = input('是否再玩一次?(输入Y继续,其他键退出):')
        if play_again.upper() == 'Y':
            number = random.randint(1, 100)
            count = 0
        else:
            print('感谢参与游戏,再见!')
            break

这个猜数字的游戏会随机生成一个1到100的数字,玩家需要输入猜测的数字,程序会根据猜测结果给出提示(猜大了或猜小了),直到猜对为止。猜对后,程序会显示猜对的次数,并询问玩家是否继续游戏。玩家可以选择继续猜数字或退出游戏。

5.2 唐僧大战白骨精

# 显示欢迎信息
print('-'*20,'欢迎光临《唐僧大战白骨精》','-'*20)

# 显示身份选择的信息
print('请选择你的身份:')
print('\t1.唐僧')
print('\t2.白骨精')
# 游戏的身份选择
player_choose = input('请选择[1-2]:')

# 打印一条分割线
print('-'*66)

# 根据用户的选择来显示不同的提示信息
if player_choose == '1':
    # 选择1
    print('你已经选择了1,你将以->唐僧<-的身份来进行游戏!')
elif player_choose == '2':
    # 选择2
    print('你竟然选择了白骨精,太不要脸了,你将以->唐僧<-的身份来进行游戏!')
else :
    # 选择3
    print('你的输入有误,系统将自动分配身份,你将以->唐僧<-的身份来进行游戏!')

# 进入游戏

# 创建变量,来保存玩家的生命值和攻击力
player_life = 2 # 生命值
player_attack = 2 # 攻击力

# 创建一个变量,保存boss的生命值和攻击力
boss_life = 10
boss_attack = 10

# 打印一条分割线
print('-'*66)
# 显示玩家的信息(攻击力、生命值)
print(f'唐僧,你的生命值是 {player_life} , 你的攻击力是 {player_attack}')

# 由于游戏选项是需要反复显示的,所以必须将其编写到一个循环中
while True :
    # 打印一条分割线
    print('-'*66)
    # 显示游戏选项,游戏正式开始
    print('请选择你要进行的操作:')
    print('\t1.练级')
    print('\t2.打BOSS')
    print('\t3.逃跑')
    game_choose = input('请选择要做的操作[1-3]:')

    # 处理用户的选择
    if game_choose == '1' :
        # 增加玩家的生命值和攻击力
        player_life += 2
        player_attack += 2
        # 显示最新的信息
        # 打印一条分割线
        print('-'*66)
        # 显示玩家的信息(攻击力、生命值)
        print(f'恭喜你升级了!,你现在的生命值是 {player_life} , 你的攻击力是 {player_attack}')
    elif game_choose == '2' :
        # 玩家攻击boss
        # 减去boss的生命值,减去的生命值应该等于玩家的攻击力
        boss_life -= player_attack 

        # 打印一条分割线
        print('-'*66)
        print('->唐僧<- 攻击了 ->白骨精<-')
        # 检查boss是否死亡
        if boss_life <= 0 :
            # boss死亡,player胜利,游戏结束
            print(f'->白骨精<-受到了 {player_attack} 点伤害,重伤不治死了,->唐僧<-赢得了胜利!')
            # 游戏结束
            break

        # boss要反击玩家
        # 减去玩家的生命值
        player_life -= boss_attack 
        print(' ->白骨精<- 攻击了 ->唐僧<-')
        # 检查玩家是否死亡
        if player_life <= 0 :
            # 玩家死亡
            print(f'你受到了 {boss_attack} 点伤害,重伤不治死了!GAME OVER')
            # 游戏结束
            break
    elif game_choose == '3' :
        # 打印一条分割线
        print('-'*66)
        # 逃跑,退出游戏
        print('->唐僧<-一扭头,撒腿就跑!GAME OVER')
        break
    else :
        # 打印一条分割线
        print('-'*66)
        print('你的输入有误,请重新输入!')