|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 鱼C-小师妹 于 2021-3-26 10:41 编辑
在线讲解:
学完上一讲,应该就对:
不陌生啦,这一讲我们通过一个换钱问题:
将 50 元的人民币兑换成 10 元、5 元和 1 元的钱币,共有多少种不同的兑换方法。
来学习 N-S 图,也被称为盒图或 NS 图。
是结构化编程中的一种可视化建模,比起前几讲的流程图,更加常用!
为何叫“N-S图”呢?
因为这是由 Nassi 和 Shneiderman 两位大佬发明滴,所以用他们名字首字母来命名。
越是复杂的程序结构,画成 N-S图就越好理解。
既然又叫盒图,就说明外观像个盒子,就像这样:
外层循环在最外面,内层循环在内部盒子中,以此类推~
我们就通过这个换钱的问题,来手把手带大家画下。
变量 x 代表 10 元的可能取值:[0,10,20,30,40,50]
变量 y 代表 5 元的可能取值:[0,5,10,15,20,25,30,35,40,45,50]
变量 z 代表 1 元的可能取值:[0,1,2,...,50]
然后 x+y+z 总和要为 50 元,才可以输出。
来,我们开始画图~
range() 函数可创建一个整数列表,常常和 for 循环组合来用。
语法:
- range(start, stop[, step])
复制代码
参数说明:
- start: 计数从 start 开始。默认是从 0 开始。例如 range(5) 等价于 range(0,5),取值范围 [0,1,2,3,4]
- stop: 计数到 stop 结束,但不包括 stop。
- step:步长,默认为 1。例如:range(0,5,2),取值范围 [0,2,4]
很实用吧~
因为是相互嵌套,后一个值的取值范围,可以用总和 50 减去前一个值。
思路有了,我来带大家画 NS 图。
画好就是上面这张图啦:
上节课说过,如果想更加美观的输出换行,就添加一个 count 计数变量。
这里我们让一行有 3 个数据。
画出盒图后,是不是程序结构更加清晰啦。
这里将核心部分翻译成代码:
- for x in range(0, 51, 10):
- for y in range(0, 51-x, 5):
- for z in range(0, 51-x-y, 1):
- if(x + y + z == 50):
- count += 1
- if count % 3 == 0:
- print("{}. ".format(count), end="")
- print("10元{}张 5元{}张 1元{}张\t".format(x // 10, y // 5, z))
- else:
- print("{}. ".format(count), end="")
- print("10元{}张 5元{}张 1元{}张\t".format(x //
- 10, y // 5, z), end=" ")
复制代码
结果:
以后再遇到这种循环嵌套类型,只要画出盒图,程序也就搞定定咯~
好了,下课~
源码:
changeCoin.py.zip
(861 Bytes, 下载次数: 20, 售价: 6 鱼币)
|
评分
-
查看全部评分
|