python 条件控制语句

  • 1.条件判断控制语句
  • 1.1 input()函数
  • 1.1.1 input的特点:
  • 1.2 if 语句
  • 1.2.1 if-else语句
  • 1.2.1.1 语句语法
  • 1.2.1.1 执行流程:
  • 1.2.2 if-elif-else 语句
  • 1.2.2.1 语句语法:
  • 1.2.2.2 执行流程:
  • 2.循环控制
  • 2.1 while语句
  • 2.2 语法:
  • 2.3 三大要素
  • 2.4 while循环练习
  • 2.5 break和continue 语句
  • 2.5.1 break
  • 2.5.2 continue
  • 2.6 for循环
  • 2.6.1 语法
  • 2.6.2 需求
  • 2.6.3 for循环循环的次数
  • 2.6.4 for循环遍历
  • 3.while 的循环嵌套
  • 3.1语法
  • 3.2 练习
  • 3.2.1 练习1:
  • 3.2.2 练习2:
  • 3.2.3 练习3:
  • 4.range函数
  • 4.1语法
  • 4.2 用法
  • 4.2.1 用法1
  • 4.2.2 用法2
  • 4.2.3 用法3
  • 5. 课后练习


1.条件判断控制语句

1.1 input()函数

• 该函数用来获取用户的输入
• 输入的值类型为字符串
• 可以采用函数将字符串转换为其他形式:
• eval(str):去掉字符串的‘或’

a = eval(input('请输入0.1或者2的数字中的一个:'))
print(type(a))  # '1'  1  str类型  必须由''"" """""" 包裹的才叫做str
print(a)

• int(str):强制转换为int形式

print(int(0.1))
>>> 0

• float(str):强制转换为浮点型

print(float(2))
>>> 2.0

• abs(str):取绝对值

print(abs(-2))
>>> 2

1.1.1 input的特点:

input具有阻塞程序的作用,你不输入,那么程序永远都不会继续往下执行
eg:

a=input('请输入一个数:')
>>> 请输入一个数:
b=float(input(请输入一个小数:))
>>> 请输入一个小数:

1.2 if 语句

1.2.1 if-else语句

1.2.1.1 语句语法

if + 条件:
    代码块
else:
    代码块

1.2.1.1 执行流程:

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

1.2.2 if-elif-else 语句

1.2.2.1 语句语法:

if 条件表达式 :
      代码块
  elif 条件表达式 :
      代码块
  elif 条件表达式 :
      代码块
   ........
  else :
      代码块

1.2.2.2 执行流程:

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

oney = int(input('请输入你的工资:'))
if money >= 50000:
    print('有钱任性')
elif money >= 30000:
    print('有钱真好')
elif money >=10000:
    print('哥也月薪上万了')
elif money >= 5000:
    print('工资还说的过去')
elif money >=2000:
    print('省吃俭用吧')
else:
    print('肠胃不好,只能吃软饭')
>>> 请输入你的工资:200
>>> 肠胃不好,只能吃软饭
>>> 请输入你的工资:2000
>>> 省吃俭用吧
>>> 请输入你的工资:9000
>>> 工资还说的过去
>>> 请输入你的工资:10000
>>> 哥也月薪上万了
>>> 请输入你的工资:30000
>>> 有钱真好
>>> 请输入你的工资:50000
>>> 有钱任性

if-elif-else中只会有一个代码块会执行

2.循环控制

2.1 while语句

循环语句可以使指定的代码块重复指定的次数.循环语句分成两种,while循环 和 for循环
著名的现象:死循环 当有条件的时候,检测到这个条件符合要求,才会去调用一次死循环

while True:
    print(111)

2.2 语法:

while 条件表达式 :
      代码块
  else:
       代码块
i = 1
while i <= 10:
    print(111)
    print(i)
    i += 1
>>> 111
1
111
2
111
3
111
4
111
5
111
6
111
7
111
8
111
9
111
10

2.3 三大要素

• 初始值
• while条件判断语句
• 自增长
• 死循环

2.4 while循环练习

# 求100以内所有的偶数的和, 包括100
# 首先拿到1-100的数
# 拿到偶数
# 在相加
i = 0
r = 0
while i < 100:
    i += 1
    # print(i)
    if i % 2 == 0:
        r = r + i  # r += i
print(r)

j = 0
s = 0
while j < 100:
    j += 2
    s += j
print(s)

2.5 break和continue 语句

2.5.1 break

可以用来立即退出循环语句,会直接结束循环 终止循环, 不会执行else后面的语句

i = 0
while i < 5:
    if i == 3:
        break
    print(i)
    i += 1
else:
    print('while循环正常结束')

2.5.2 continue

continue的特性:当执行到continue的时候,我们的循环会跳过档次循环,直接开始下一次的循环

i = 0
while i < 5:
    if i == 3:
        continue
    print(i)
    i += 1
else:
    print('while循环正常结束')

2.6 for循环

2.6.1 语法

语法
for 变量 in 序列(遍历的规则):
    代码块

2.6.2 需求

拿到一个列表数据,要对列表数据进行数据处理之后,再用。

list1 = [1, 2, 3, 4, 5]
list2 = []
for i in list1:  # 遍历list1列表中元素
    i += 1
    list1.remove(i)
    # list2.append(i)
print(list1)

2.6.3 for循环循环的次数

如果你在循环过程中对列表的长度做了修改,那么你的循环次数就不在受控制了数取决于列表的长度

2.6.4 for循环遍历

通过for循环来遍历列表

语法 for 变量 in 序列(遍历的规则):
       代码块

注意: for循环的代码块会执行多次,序列中有几个元素就会执行几次。每执行一次就会将序列中的一个元素赋值给变量,所以我们可以通过变量来获取列表中的元素

dict1 = dict(a='11', b='12', c='ss')
for k, v in dict1.items():
    print(k, '=', v)

3.while 的循环嵌套

Python 语言允许在一个循环体里面嵌入另一个循环。

3.1语法

while 表达式:
   while 表达式:
      代码块
   代码块

for 变量 in 循环规则:
   for 变量 in 循环规则:
       代码块
   代码块

3.2 练习

3.2.1 练习1:

i = 0
while i < 5:  # i控制行数
    j = 0
    while j < 5:  # j控制每一行有几列*
        print('*', end='')
        j += 1
    print()
    i += 1
*****
*****
*****
*****
*****

3.2.2 练习2:

i = 0
while i < 5:  # i控制行数
    j = 0
    while j < i+1:  # j控制每一行有几列*
        print('*', end='')
        j += 1
    print()
    i += 1
*
**
***
****
*****

3.2.3 练习3:

i = 0
while i < 5:  # i控制行数
    j = 0
    while j < 5-i:  # j控制每一行有几列*
        print('*', end='')
        j += 1
    print()
    i += 1
*****
****
***
**
*

4.range函数

range是Python内置函数,用作范围、区间的定义,
range(start,stop,step)

4.1语法

range(开始位置, 结束位置, 步长)

range(start,stop,step)

start: 计数从start开始。默认是从0开始。
例如 range(5)等价于range(0,5)

stop: 计数到stop结束,但不包括 stop。
例如:list(range(0,5))是[0, 1, 2, 3, 4]没有5

step:步长,默认为1。
例如:range(0,5)等价于range(0, 5, 1)

ps:开始位置可以省略,省略即开始位置的数为0, 步长省略即为1
左闭右开区间

4.2 用法

4.2.1 用法1

只有一个参数,表示从0到这个参数内的所有整数,不包括参数

ran=range(10)

定义一个list,用来将range的范围的所有数进行盛放为list形式

arr_str=list(ran)
print(ran)
print(arr_str)

4.2.2 用法2

两个参数,第一个表示左边界,第二个表示右边界,range表示从左边界到右边界的所有整数,左闭右开。

ran=range(1,15)
arr_str=list(ran)
print(ran)
print(arr_str)

4.2.3 用法3

三个参数,第一个表示左边界,第二个表示右边界,第三个表示步长step,即两个整数之间相差的数,左闭右开。

ran=range(1,15,2)
arr_str=list(ran)
print(ran)
print(arr_str)

运行结果:

range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(1, 15)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
range(1, 15, 2)
[1, 3, 5, 7, 9, 11, 13]

eg:

range(9)  # 相当于 range(0, 9, 1)
print(range(9))
print(list(range(9)))

for i in range(9):
    print(i)

5. 课后练习

  1. 求1000以内所有的水仙花数
  2. 获取用户输入的任意数,判断其是否是质数?
  3. 打印九九乘法表
  4. 猜拳游戏:
    • 出拳 玩家:手动输入 电脑:随机输入
    • 判断输赢: 玩家获胜 电脑获胜 平局
# 1. 求1000以内所有的水仙花数
for i in range(100,1000):
    a=i//100
    b=(i%100)//10
    c=i%10
    d=a**3+b**3+c**3
    if d==i :

         print(i)
# 2. 获取用户输入的任意数,判断其是否是质数?
e: int = int(input('请输入任意数:'))
i = 1
while i < e :
    if e%i==0:
        print('不是质数')
        break
    else:
        print('是质数')
        break
    i += 1

else:
    print('不在范围内')
# 3.九九乘法表
i = 1
while i <= 9:
    
    j = 1
    while(j <= i):    # j的大小是由i来控制的
        print('{}x{}={}\t'.format(j, i, i * j), end='')
        j += 1
    print('')
    i += 1
# 4. 猜拳游戏:
# • 出拳  玩家:手动输入  电脑:随机输入
# • 判断输赢:  玩家获胜  电脑获胜  平局


import random
while 1:
    list = [0, 1, 2]
    player = eval(input("从0-‘剪刀’,1-‘石头’,2-‘布’中任选一个数:"))
    if player not in list:
        print('输入错误')
        break
    computer = random.randint(0,3)

    if player == computer:
        print('平局')
    elif player == (0 and computer == 2)or (player == 1 and computer == 0) or (player == 2 and computer == 1):
        print('恭喜你,你赢了!')
    else:
        print('抱歉,你输了!')
    judge = input("还玩吗?输入t退出,Enter键继续...")
    if judge.lower() == "t":
        break
    else:
        continue