循环与控制很多人跟我说,上一章的知识点已经忘记的差不多了,那我再贴一遍知识图吧
p0总结在线看
编程可以从这些基本的招式开始练。
现在复习一下编程第一定律:在Python代码里,出现的所有东西不是 变量 就是 运算符
Python编程基本能力:可以识别Python代码里,哪些是变量,哪些是运算
myname = '阿金'
print('我是‘ + myname)
codeage = 20
print('我已编程')
print(codeage)
print('年')
我们可以识别到:
变量 myname "阿金" ’我是‘ codeage 20 ’我已编程‘ '年'
运算 = + (字符串相加) print
易错点:在打印codeage的时候,不能用 print('我已编程' + codeage + '年') ,你知道这是为什么吗?
因为 '我已编程' 是字符串变量 codeage 是整数,字符串和整数不能直接做 + 法
试一下 在线Python
字符串 不能 和整数相加,有没有一种运算可以把整数转成字符串呢?如果可以转化,不就可以直接相加了吗,答案是肯定的。
codeage = 20
s_codeage = str(codeage)
codeage 转化成字符串 s_codeage, 此时的 s_cogeage值就是 "20"
| 类型转化 | 语法 | 例子 |
| 其他类型转字符串 | str | str(123) |
| 转整型 | int | int("123") |
| 转浮点型 | float | float("3.14") |
| 转布尔型(后面细讲) | bool | bool(1) |
codeage = 20print('我已编程' + str(codeage) + '年')我们注意到,多个变量一层层的运算连在一起的时候,理解起来会有困难,解决办法就是把复杂的算式一步步拆解开来理解:
print('我已编程' + str(codeage) + '年')
a = ’我已编程'
b = str(codeage)
c = a + b
d = '年'
e = c + d
print(e)
两个变量进行 比较 是非常本能的一种 运算
a = 1
b = 2
b > a
b > a 表示的不是 b 大于 a这个结果,而是比较计算 b 大于 a吗?,这样说不太好理解的话,可以把代码稍微改一下a = 1
b = 2
c = b > a
print(c)
d = b < a
print(d)
c 等于 b > a 比较计算完的结果。在这个例子里,c 的值为 True;b < a 也是一个运算,d 的值为 False;True 和 False 是布尔类型的变量,分别表示 真 和 假b 大于 a吗? 为 真 (True); b 小于a吗? 为 假( False)
> < 还有别的比较运算| 操作符 | 含义 | 例子 |
| == | 等于 | 1 == 1 #True |
| != | 不等于 | 1 != 2 #True |
| < | 小于 | 1 < 2 #True |
| > | 大于 | 1 > 2 #False |
| <= | 小于等于 | 1 <= 1 #True |
| >= | 大于等于 | 1 >= 1 #True |
True和False的首字母是大写的,true和false 不是布尔型
a = true #会报错a = True #对易错点:判断两个变量相等用 == , 千万不要用 = (=是赋值运算)
1 == 1 #正确 1 = 1 #会报错其他数据类型也都可以比较运算
print('jinge' == 'jinge')print('abc' >= 'cda')print(True == False)print(1 == 1.0)print(10 != 'dog')布尔类型之间还可以进行布尔运算(不是比较);and or not 运算结果还是 布尔类型

举几个栗子:
print(2 > 1 and 3 > 1) #为Trueprint(20 < 50 or 20 > 50) #为Truewhile 循环我们注意到代码是顺序执行的。比如:
a = 0a = a + 1a = a + 1a = a + 1a = a + 1print(a) #结果为4

print('右走1站')
print('右走1站')
print('右走1站')
print('右走1站')
#一共走了4站
试一下 在线Python
相同的运算 做了多遍,人话:执行重复的运算while 循环来写while 循环的语法:

条件 是一个布尔运算表达式,比如 a < 4 表示条件是 a 小于4的时候,重复执行下面的语句条件 后面要写一个 : (英文的冒号), 另起一行表示循环执行的语句,要用 四个空格 开头
现在换一种图示的方法:

要用4个空格把 循环语句块 缩进一级,表达的意思就是这块是循环内的代码
: 表达的意思是,条件 写完了,接下来的是 循环语句块 把 a = a + 1 用循环来实现一遍
a = 0a = a + 1a = a + 1a = a + 1a = a + 1print(a) #结果为4 套用语法:
循环 语句要有循环思维
所谓循环思维,就是每次循环不要把条件判断忘记了
或者我们可以换一个图来解释:

现在改写一下 地铁循环
print('右走1站')print('右走1站')print('右走1站')print('右走1站')#一共走了4站
套用循环语法
易错点:在循环体内,容易把控制循环条件的变量 漏掉,比如:
这个写法的错误可以结合循环流程图看一下,我们会发现每次做 while 条件 a < 4 判断时
a 的值一直是 0(因为没有在寻循环体改变它) 所以 条件 一直为 True循环 是初学编程最难的知识点,如果理解了循环,我们再来看if 会轻松很多a = 4
while a < 4:
print("右走1站")
试一下 在线Python
循环体 根本没机会执行,因为 条件 一开始就是 Falsea = 0
while a < 1:
print("右走1站")
a = a + 1
试一下 在线Python
循环体 只会执行1遍,因为执行1遍之后a就为1了,条件 为 False 循环 的理解更进一步了,原来 循环 是可以执行 0 -> ∞(无穷) 次重复对于只要执行 0 或 1 次的情况,换句话说,只要判断执行或不执行的情况,可以用 if 语句


if (如果)后面的条件为 True 就执行,否则,不执行
: 条件 四个空格 语句块 这几个的意思和循环里是一样的a = 0
if a < 1:
print("右走1站")
#其他语句
if) a 小于 1,就 print("右走1站")
简单重复 的定式,你可以练一遍再开始我们的综合运用
while 循环 和 if 分支 没有改变程序是顺序执行的这一点,不过他们可以控制某些语句 执行或不执行
可以控制 重复执行的次数
试一下 在线Python
条件 和 控制 ,在这两个工具的帮助下,我们的程序才变得智能起来
"右走1站"
"右走1站"
...
或者
"左走1站"
"左走1站"
...
来指路。(考虑特殊情况如果 用户要去的就是 王府井 站,那么请打印 "现在出站")
”王府井右行乘客问路回答算法“ 吗?start = '王府井'start_num = 8end = '西单'end_num = 11fangxiang = '右'zou_num = end_num - start_numprint('往' + fangxiang + '走'+ str(zou_num) + '站‘)str 运算做了类型转化因为乘客可能往左走,要完整的实现,还得写一个程序 ”王府井左行乘客问路回答算法“
start = '王府井'start_num = 8end = '东单'end_num = 7fangxiang = '左'zou_num = start_num - end_numprint('往' + fangxiang + '走' + str(zou_num) + '站')继续,如果乘客要去的是 "王府井"(当前站),我还得再写一个程序 "王府井当站乘客问路回答算法"
if 和 while 我们完全可以把这3个程序合成一个, 叫 "王府井乘客问路回答算法"思路
这个编程思路的核心要点是把问题进行分解
"右走1站"
"右走1站"
...
或者
"左走1站"
"左走1站"
...
指路回答法打印 "现在出站"
当前站指路法现在,我们假设这两个方法有现成代码块(熟悉这个名词吧),来整理下思路

再稍微进一步,就是主程序的代码了:

start = '王府井'
start_num = 8
end = '?' #具体执行时填写
end_num = ? #具体执行时填写
fangxiang = ''
zou_num = 0
if start_num == end_num:
当前站指路法
if start_num < end_num:
fangxiang = '右'
zou_num = end_num - start_num
指路回答法
if start_num > end_num:
fangxiang = '左'
zou_num = start_num - end_num
指路回答法
当前站指路法 和 指路回答法


start = '王府井'
start_num = 8
end = '?' #具体执行时填写
end_num = ? #具体执行时填写
fangxiang = ''
zou_num = 0
if start_num == end_num:
print("现在出站")
if start_num < end_num:
fangxiang = '右'
zou_num = end_num - start_num
a = 0
while a < zou_num:
print(fangxiang+'走1站') #一定要4个空格
a = a + 1
if start_num > end_num:
fangxiang = '左'
zou_num = start_num - end_num
a = 0
while a < zou_num:
print(fangxiang+'走1站') #一定要4个空格
a = a + 1
循环 与 if 的知识,不用担心今天的新知识太多~p1 知识点总结:
p1总结在线看
