2020-07-27 迷你实操2(学会用函数编写程序)

互联网公司有两种角色,产品经理、程序员。产品经理提开发需求给程序员,然后程序员开发出满足需求功能的程序。

我们来做个模拟,我们扮演“程序员”接到“产品经理”需求,并完成开发的过程。

【明确项目】

【拆解项目】

为了搞清楚计算过程,我们需要根据案例倒推出计算公式。

尝试倒推计算公式:

(这个公式粗略看来没有太大问题,不过后续编程时还需要打磨一下)

【逐步执行】

【版本1.0:能用就好】

要做一个“能用就好”的最基本的程序,我们可以直接编写一个带参数函数完成计算功能。程序写出来大概长这个结构:

我们会用到第一个项目末尾提到的知识点:格式化字符串。

注:%f的意思是格式化字符串为浮点型,%.1f的意思是格式化字符串为浮点型,并保留1位小数

【版本2.0:稍作改良】

要怎么调整代码,才能实现产品经理的需求对人数向上取整呢?也就是计算结果是1.5人的时候,取整数2,计算结果3.8人的时候,取整数4,计算结果10.1人的时候,取整数11……

思路1:

python 常见的取整方法 - 简书

思路2:

可以用%取余数运算,比如print(5%4)的结果是1(5除以4余数为1)。

切入点:如果人数不是整数(余数不为零),就把人数用int()函数转化为整数,然后再加1。

在这里,用第一种方法代码更简洁。

解决了计算问题后,产品经理又过来找你,这次他的需求是期望你简化代码

第一步,我们可以先想象一下预期效果:

要想实现这样的效果,我们需要解决一个问题:应该怎么传递参数,才能让函数estimated(参数……)自动区分并完成工时计算人力计算

要区分两种不同的计算方式,当然用条件判断语句啦。

继续完善一下预期的代码结构:

现在的问题又推进了一步:该如何设置条件,让条件1代表人力计算,条件2代表工时计算?

这个问题有多种解法,关键点是利用参数设置条件。

方法1:

在调用函数的时候,我们可以给指定的参数赋值,那剩余的参数就会是默认值(也就是在定义函数的那行定义了他们的默认值)。

方法2:

我们还可以这样设置三个参数来实现相同的效果:

【版本3.0:精细打磨】

现在我们又拿到了新的需求:制作出“可以交互运行”的程序。

想让程序可以交互,显然要用inputprint语句。

到这里,程序基本已经完成了。不过,为了展示用函数封装代码的精髓,我想再问大家一个问题:

如果要优化上面代码的结构的话,要怎么优化?

答案是:可以创建一个主函数,用来调用几个子函数

之所以写成“子函数+主函数”的代码结构,也是因为每个不同的功能封装在单独的函数代码中,方便后续修改、增删

比如我们想要加一个功能“让程序循环运行,直到用户选择结束”。那么,就可以在程序中加上一个again函数。

提示:1.需要新增变量和改造主函数;2.用到的知识是判断和循环;3.对代码进行调整是正常的(即不要期待总能一次成功)。


【课后练习】

练习要求:

和电脑玩一个剪刀石头布的游戏:电脑随机出拳,我们可选择出什么。

【双方出拳】

首先,我们要让双方选择出拳,才能判断胜负。

我们可以设置变量computer_choice代表电脑的出拳选择,设置变量user_choice代表你的出拳选择。

电脑的出拳,我们可以使用random.choice()来随机选择;我们的出拳,可以手动输入我们出拳的类型。

另外,判断下输入:当输入的内容不是石头剪刀布时,电脑会提醒'输入有误,请重新出拳',并重新出拳。

【双方亮拳】

你和电脑已经对自己要出的拳进行了选择,接下来,我们需要知道双方的出拳类型。

请使用print()函数补充亮拳的结果。

注:使用字符串格式化!

【判断胜负】

在前面两步,电脑和你已经选择完出拳的类型并亮拳后,只差最后一步:根据结果判断胜负。

胜负分为三种情况:

两方出拳一致:平局;

你出石头,电脑出剪刀;你出剪刀,电脑出布;你出布,电脑出石头:你获胜;

其他情况:你输了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352