条件判断语句(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 = 35if 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类型 必须由''"" """""" 包裹的才叫做strprint(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)请输入:3456a = int(input('请输入:'))if a == 0:print(123)elif a == 1:print(456)elif a == 2:print(789)
if-elif-else 语句
value = 30000if 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 = 1while i <= 10:print(111)print(i)i += 1
# 求100以内所有的偶数的和, 包括100# 首先拿到1-100的数# 拿到偶数# 在相加# 1i = 0r = 0while i < 100:i += 1# print(i)if i % 2 == 0:r = r + i # r += iprint(r)#2j = 0s = 0while j < 100:j += 2s += jprint(s)
while 循环嵌套
i = 0while i < 5: # i控制行数j = 0while j < 5: # j控制每一行有几列*print('*', end='')j += 1print()i += 1*************************"""* 0 1** 1 2*** 2 3**** 3 4***** 4 5"""i = 0while i < 5: # i控制行数j = 0while j < i+1: # j控制每一行有几列*print('*', end='')j += 1print()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 = 0while i < 5: # i控制行数j = 0while j < 5-i: # j控制每一行有几列*print('*', end='')j += 1print()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 = 0while 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)```pythoni = 100while 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 += 1153370371407
- 打印 9x9乘法表
```python
i = 0
while i < 9: # i控制行数
i += 1
j = 0
while j < i: # j控制每一行有几列*
print()j += 1print(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. 获取用户输入的任意数,判断其是否是质数?```pythonnum = int(input('Please input a number:'))prime = True # 是否质数标记,初始值为TRUE(质数)while num > 1:j = 2while j < num ** 0.5:if num % j == 0:prime = False # 找到任何一个因数,标记改为FALSE(非质数)j += 1if prime == True:print(num, '是质数')breakelse:print(num, '不是质数')breakPlease input a number:2828 不是质数Please input a number:9797 是质数
- 猜拳游戏:
- 出拳 玩家:手动输入 电脑:随机输入
- 判断输赢: 玩家获胜 电脑获胜 平局
```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 玩家输入错误,请重新开始! ```
