条件判断语句(if语句)
- 执行的流程:
- if语句在执行时,会先对条件表达式进行求值判断,
- 如果为True,则执行if后的语句
- 如果为False,则不执行
语法:if 条件表达式 :
代码块
代码块代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行
- 代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
- 代码块就是一种为代码分组的机制
a = int(input('请输入0.1或者2的数字中的一个:'))
if a == 0:
print(123)
print(123)
print(123)
if a == 1:
print(456)
if a == 2:
print('hahaha')
# 赋值
num = 35
if num > 20 and num < 40:
print('num比20大,num比40小')
input() 函数
- 该函数用来获取用户的输入
- input()调用后,程序会立即暂停,等待用户输入
- 用户输入完内容以后,点击回车程序才会继续向下执行
- 用户输入完成以后,其所输入的的内容会以返回值得形式返回
# eval() 去掉字符串的‘’ int()将由int类型构造的字符串强制转换为int类型本身
# a = int(eval(input('请输入0.1或者2的数字中的一个:')))
a = eval(input('请输入0.1或者2的数字中的一个:'))
print(type(a)) # '1' 1 str类型 必须由''"" """""" 包裹的才叫做str
print(a)
# input具有阻塞程序的作用,你不输入,那么程序永远都不会继续往下执行
print(111)
if a == 0:
print(123)
print(123)
print(123)
if a == 1:
print(456)
if a == 2:
print('hahaha')
if-else语句
语法:
if 条件表达式 :
代码块
else :
代码块执行流程:
- if-else语句在执行时,先对if后的条件表达式进行求值判断
- 如果为True,则执行if后的代码块
- 如果为False,则执行else后的代码块)
a = int(input('请输入:'))
if a == 0:
print(123)
else:
print(456)
请输入:3
456
a = int(input('请输入:'))
if a == 0:
print(123)
elif a == 1:
print(456)
elif a == 2:
print(789)
if-elif-else 语句
value = 30000
if value >= 30000:
print('有钱任性')
elif value >= 20000:
print('有钱真好')
elif value >= 10000:
print('哥也月薪上万了')
elif value >= 5000:
print('工资还说的过去')
elif value >= 2000:
print('能养活自己了')
语法:
if 条件表达式 :
代码块
elif 条件表达式 :
代码块
elif 条件表达式 :
代码块
……..
else :
代码块执行流程:
- if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,
- 如果表达式的结果为True,则执行当前代码块,然后语句结束
- 如果表达式的结果为False,则继续向下判断,直到找到True为止
- 如果所有的表达式都是False,则执行else后的代码块 ```python
“”” 345月属于春季 678月属于夏季 9 10 11月属于秋季 12, 1 2属于冬季 “””
month = float(input(‘请输入月份:’)) if 0 < month <= 12: if 3 <= month <= 5: print(‘春季’) elif 6 <= month <= 8: print(‘春季’) elif 9 <= month <= 11: print(‘春季’) else: print(‘冬季’)
- 总结: if-elif-else中只会有一个代码块会执行, 并且完整语句一定会有输出, 但是if-elif-elif 不一定有输出, 但是如果有输出,一定只会输出一条.
<br />
<a name="article-title"></a>
# 循环控制
<a name="AIczk"></a>
## **while语句**
- 循环语句可以使指定的代码块重复指定的次数.循环语句分成两种,while循环 和 for循环
- 语法:
while 条件表达式 :<br /> 代码块<br /> else:<br /> 代码块
```python
# 著名的现象:死循环 当有条件的时候,检测到这个条件符合要求,才会去调用一次死循环
# while True:
# print(111)
# 三大要素
# 1. 设置一个初始值
# 2. while后面加上一个判断,对初始值的判断, 也可以是说对初始值进行一个限制
# 3. 初始值的自增长
i = 1
while i <= 10:
print(111)
print(i)
i += 1
# 求100以内所有的偶数的和, 包括100
# 首先拿到1-100的数
# 拿到偶数
# 在相加
# 1
i = 0
r = 0
while i < 100:
i += 1
# print(i)
if i % 2 == 0:
r = r + i # r += i
print(r)
#2
j = 0
s = 0
while j < 100:
j += 2
s += j
print(s)
while 循环嵌套
i = 0
while i < 5: # i控制行数
j = 0
while j < 5: # j控制每一行有几列*
print('*', end='')
j += 1
print()
i += 1
*****
*****
*****
*****
*****
"""
* 0 1
** 1 2
*** 2 3
**** 3 4
***** 4 5
"""
i = 0
while i < 5: # i控制行数
j = 0
while j < i+1: # j控制每一行有几列*
print('*', end='')
j += 1
print()
i += 1
*
**
***
****
*****
"""
***** i=0 j=5 i + j < 5 j < 5-i
**** i=1 j=4
*** i=2 j=3
** i=3 j=2
* i=4 j=1
"""
i = 0
while i < 5: # i控制行数
j = 0
while j < 5-i: # j控制每一行有几列*
print('*', end='')
j += 1
print()
i += 1
*****
****
***
**
*
break和continue
- break 可以用来立即退出循环语句,包括else语句
- continue 用来跳过当次循环
```python
break 会直接结束循环 终止循环, 不会执行else后面的语句
i = 0 while i < 5: if i == 3:
print(i) i += 1 else: print(‘while循环正常结束’)break
0 1 2
<a name="ouHgO"></a>
## for循环遍历
<a name="xmibq"></a>
### for循环
- 通过for循环来遍历列表
```python
# 语法
# for 变量 in 序列(遍历的规则):
# 代码块
list1 = ['第一', '第二', '第三', '第四', '第五', '第六']
len(list1)
i = 0
while i < len(list1):
print(list1[i])
i += 1
第一
第二
第三
第四
第五
第六
---------------------------
list1 = ['第一', '第二', '第三', '第四', '第五', '第六']
for i in list1:
print(i)
第一
第二
第三
第四
第五
第六
------------------------------
# 需求: 拿到一个列表数据,要对列表数据进行数据处理之后,在用
list1 = ['第一', '第二', '第三', '第四', '第五', '第六']
list2 = []
for i in list1:
list2.append(i)
print(list2)
['第一', '第二', '第三', '第四', '第五', '第六']
------------------------------------------
# for循环循环的次, 如果你在循环过程中对列表的长度做了修改,那么你的循环次数就不在受控制了数取决于列表的长度
list1 = ['第一', '第二', '第三', '第四', '第五', '第六']
for i in list1:
list1.remove(i)
print(list1)
['第二', '第四', '第六']
注意: for循环的代码块会执行多次,序列中有几个元素就会执行几次。每执行一次就会将序列中的一个元素赋值给变量,所以我们可以通过变量来获取列表中的元素
range(start, stop[, step])
参数说明
·start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
```python
range()函数
语法 range(开始位置, 结束位置, 步长) 开始位置可以省略,省略即开始位置的数为0, 步长省略即为1 左闭右开区间
range(9) # 相当于 range(0, 9, 1)
print(range(9)) print(list(range(9))) for i in range(9): print(i)
range(0, 9) [0, 1, 2, 3, 4, 5, 6, 7, 8] 0 1 2 3 4 5 6 7
8
list1 = [‘第一’, ‘第二’, ‘第三’, ‘第四’, ‘第五’, ‘第六’] print(‘list1=’, list1) list2 = [] for i in range(len(list1)): list2.append(list1[i]) print(‘list2=’, list2)
list1= [‘第一’, ‘第二’, ‘第三’, ‘第四’, ‘第五’, ‘第六’] list2= [‘第一’, ‘第二’, ‘第三’, ‘第四’, ‘第五’, ‘第六’]
<a name="KZyzj"></a>
### 作业
1. 求1000以内所有的水仙花数。水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)
```python
i = 100
while 100 <= i and i <1000:
hundreds = i // 100 # 百位数
tens = i % 100 // 10 # 十位数
ones = i % 10 # 个位数
if ones ** 3 + tens ** 3 + hundreds ** 3 == i:
print(i)
i += 1
153
370
371
407
- 打印 9x9乘法表
```python
i = 0
while i < 9: # i控制行数
i += 1
j = 0
while j < i: # j控制每一行有几列*
print()j += 1
print(f'{j}*{i}={j*i}', end='\t')
11=1
12=2 22=4
13=3 23=6 33=9
14=4 24=8 34=12 44=16
15=5 25=10 35=15 45=20 55=25
16=6 26=12 36=18 46=24 56=30 66=36
17=7 27=14 37=21 47=28 57=35 67=42 77=49
18=8 28=16 38=24 48=32 58=40 68=48 78=56 88=64
19=9 29=18 39=27 49=36 59=45 69=54 79=63 89=72 9*9=81
3. 获取用户输入的任意数,判断其是否是质数?
```python
num = int(input('Please input a number:'))
prime = True # 是否质数标记,初始值为TRUE(质数)
while num > 1:
j = 2
while j < num ** 0.5:
if num % j == 0:
prime = False # 找到任何一个因数,标记改为FALSE(非质数)
j += 1
if prime == True:
print(num, '是质数')
break
else:
print(num, '不是质数')
break
Please input a number:28
28 不是质数
Please input a number:97
97 是质数
- 猜拳游戏:
- 出拳 玩家:手动输入 电脑:随机输入
- 判断输赢: 玩家获胜 电脑获胜 平局
```python
import random
while True:
user = int(input(‘0 代表拳头, 1代表布,2 代表剪刀. 玩家出:’))
if user in [0, 1, 2]:
computer = random.randint(0,2)
if computer == user:
print('平局:', '电脑出', computer, ' 玩家出',user,)
三种可能电脑胜
elif (computer == 1 and user == 0) or (computer == 0 and user == 2) or (computer == 2 and user == 1):
else:print('电脑获胜:', '电脑出', computer, ' 玩家出',user)
else: print(‘玩家输入错误,请重新开始!’) breakprint('玩家获胜:', '电脑出', computer, ' 玩家出',user)
0 代表拳头, 1代表布,2 代表剪刀. 玩家出:0 电脑获胜: 电脑出 1 玩家出 0 0 代表拳头, 1代表布,2 代表剪刀. 玩家出:1 玩家获胜: 电脑出 0 玩家出 1 0 代表拳头, 1代表布,2 代表剪刀. 玩家出:2 平局: 电脑出 2 玩家出 2 0 代表拳头, 1代表布,2 代表剪刀. 玩家出:3 玩家输入错误,请重新开始! ```