逻辑思维
有人说第1章和第2章的内容太丰富了,脑子要挤爆了。好消息是 变量
与 运算
循环
和 控制
; 掌握这4个知识我们已经可以写世界上绝大部分的程序了。(后面的知识不过是现有知识的优化而已)
所以第3章和第4章讲 逻辑思维
(有没有感觉到逻辑思维
才是真正的核心), 同时也是对 第1章和第2章的复习。
第一个故事是关于钱包的,尝试用Python来记录小明的钱包
思路
从消费情况的描述中我们看到
30
这样的
10
20 消费变量
我们设计一个 钱包变量
,(思考一下:什么数据类型合适?);钱包变量
每一天都在变化,不是减少,就是增加
my_money
my_money = 100.5 #初始值
my_money = my_money - 30 #第一天
my_money = my_money + 10 #第二天
my_money = my_money - 20 #第二天
my_money = my_money - 25 #第三天
print(my_money)
试一下 在线Python
随着钱包
的变化,我们也感受到了 变量
的 变化
。
假如一本书的封面标价是24.95美元,书店打六折。第一本运费花费3美元,后续每增加一本的运费是75美分。问买60本一共花费多少钱呢?
输入
, 输出
呢?代码块
。比如上述的书店场景,可以取名 该书买N本总花费计算器
N
和 输出 总花费
。
N=60
total = 0.0
total = N * 24.95 * 0.6 #书本费
total = total + 3 #第一本
total = total + (N-1)* 0.75 #注意N-1要括号
print(total)
试一下 在线Python
BMI
BMI
(并非编程知识,是实际知识)女神身材判定器
和 BMI算法
(注意:如果取出了名字,我们就应该知道这两个代码块
的输入和输出)女神身材判定器
输入 体重,身高 输出 减肥 ,不减肥 (过重或肥胖就输出减肥)BMI算法
输入 体重,身高 输出 过轻,正常,过重,肥胖
BMI指数 == "过重"
(比较运算)
height = 1.62
weight = 55
bmi = ‘’ #不知道先为空
"BMI算法"
if bmi == "过重" or bmi == ”肥胖“: #还记得比较运算和布尔运算吗,== or : 可以看第二章来复习
print("减肥")
if bmi == "过轻" or bmi == ”正常“: #还记得比较运算和布尔运算吗,== or : 可以看第二章来复习
print("不减肥")
代码块
会让每一块更加容易编写!现在重点攻克 BMI算法
尝试用编程来写
height = 1.62
weight = 55
bmi = ‘’ #不知道先为空
#"BMI算法"
bmi_zhishu = 0#初始值为0 (注意这里的指数不要取名为 bmi 不要和之前的重复,因为数据不一样)
bmi_zhishu = weight / (height * height)
if bmi_zhishu < 18.5:
bmi = ‘过轻’
if bmi_zhishu >= 18.5 and bmi_zhishu < 23.9:
bmi = ‘正常’
if bmi_zhishu >= 23.9 and bim_zhishu < 27:
bmi = ‘过重’
if bmi_zhishu >= 27:
bmi = ‘肥胖’
if bmi == "过重" or bmi == ”肥胖“: #还记得比较运算和布尔运算吗,== or : 可以看第二章来复习
print("减肥")
if bmi == "过轻" or bmi == ”正常“: #还记得比较运算和布尔运算吗,== or : 可以看第二章来复习
print("不减肥")
试一下 在线Python
bmi
在代码里是bmi描述。bmi_zhishu
是浮点类型的指数值 (一定主要不要重名,会导致变量覆盖)
"右走1站"
"右走1站"
...
或者
"左走1站"
"左走1站"
...
来指路。(考虑特殊情况如果 用户要去的就是 王府井
站,那么请打印 "现在出站"
)
"站名转站号算法"
输入:站名 输出 :站号
可以继承之前的代码:
start = '王府井'
start_num = 8
end = '?' #具体执行时填写
end_num = 0 #默认是0,请用算法计算
#"站名转站号算法"
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
start = '王府井'
start_num = 8
end = '?' #具体执行时填写
end_num = 0 #默认是0,请用算法计算
#"站名转站号算法"
if end == '四惠东':
end_num = 1
if end == '四惠':
end_num = 2
if end == '大望路':
end_num = 3
if end == '国贸':
end_num = 4
if end == '永安里':
end_num = 5
if end == '建国门':
end_num = 6
if end == '东单':
end_num = 7
if end == '王府井':
end_num = 8
if end == '天安门东':
end_num = 9
if end == '天安门西':
end_num = 10
if end == '西单':
end_num = 11
if end == '复兴路':
end_num = 12
if end == '南礼士路':
end_num = 13
if end == '木樨地':
end_num = 14
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
是不是很恶心,没关系后面会介绍如何简化处理这类问题