加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

笨办法学Python 习题 19: 函数和变量

发布时间:2020-12-17 16:59:40 所属栏目:Python 来源:网络整理
导读:函数这个概念也许承载了太多的信息量,不过别担心。只要坚持做这些练习,对照上个练习中的检查点检查一遍这次的联系,你最终会明白这些内容的。 有一个你可能没有注意到的细节,我们现在强调一下:函数里边的变量和脚本里边的变量之间是没有连接的。下面的这

函数这个概念也许承载了太多的信息量,不过别担心。只要坚持做这些练习,对照上个练习中的检查点检查一遍这次的联系,你最终会明白这些内容的。

有一个你可能没有注意到的细节,我们现在强调一下:函数里边的变量和脚本里边的变量之间是没有连接的。下面的这个练习可以让你对这一点有更多的思考:

#?-*-?coding:utf-8?-*-
def?cheese_and_crackers(cheese_count,boxes_of_crackers):?#创建奶酪和咸饼干函数,参数为奶酪数量,咸饼干盒数
????print"You?have?%d?cheese!"?%?cheese_count
????print?"You?have?%d?boxes?of?crackers!"?%?boxes_of_crackers
????print?"Man?that's?enough?for?a?party!"
????print?"Get?a?blanket."

print?"We?can?just?give?the?function?number?directly:"??#输出
cheese_and_crackers(20,30)??#函数的参数值

print?"OR,we?can?use?variable?from?our?script"??#输出
amount_of_cheese?=?10??#10赋值给amount_of_cheese
amount_of_crackers?=?50??#50赋值给amount_of_crackers

cheese_and_crackers(amount_of_cheese,amount_of_crackers)?#函数的参数
print?"We?can?even?do?math?inside?too:"?#输出
cheese_and_crackers(10+20,5+6)??#函数的参数分别为(30,11)

print?"And?we?can?combine?the?two,?variables?and?math:"?#输出内容
cheese_and_crackers(amount_of_cheese+100,amount_of_crackers+1000)??#amount_of_cheese值加100,amount_of_crackeres值加1000

通过这个练习,你看到我们给我们的函数 cheese_and_crackers 很多的参数,然后在函数里把它们打印出来。我们可以在函数里用变量名,我们可以在函数里做运算,我们甚至可以将变量和运算结合起来。

从一方面来说,函数的参数和我们的生成变量时用的 = 赋值符类似。事实上,如果一个物件你可以用 =将其命名,你通常也可以将其作为参数传递给一个函数

结果:

#?-*-?coding:utf-8?-*-
def?cheese_and_crackers(cheese_count,boxes_of_crackers):?#创建奶酪和咸饼干函数,参数为奶酪数量,咸饼干盒数
????print"You?have?%d?cheese!"?%?cheese_count
????print?"You?have?%d?boxes?of?crackers!"?%?boxes_of_crackers
????print?"Man?that's?enough?for?a?party!"
????print?"Get?a?blanket."

print?"We?can?just?give?the?function?number?directly:"
cheese_and_crackers(20,30)

print?"OR,we?can?use?variable?from?our?script"
amount_of_cheese?=?10
amount_of_crackers?=?50

cheese_and_crackers(amount_of_cheese,amount_of_crackers)
print?"We?can?even?do?math?inside?too:"
cheese_and_crackers(10+20,5+6)

print?"And?we?can?combine?the?two,?variables?and?math:"
cheese_and_crackers(amount_of_cheese+100,amount_of_crackers+1000)

加分习题

1. 倒着将脚本读完,在每一行上面添加一行注解,说明这行的作用。

2. 从最后一行开始,倒着阅读每一行,读出所有的重要字符来。

3. 自己编至少一个函数出来,然后用 10 种方法运行这个函数。

#?-*-?coding:utf-8?-*-
def?people_count(girl,boy):
????print?"有%s个女孩"?%?girl
????print?"有%s个男孩"?%?boy
????print?"总共有%s个人"?%?(girl+boy)
????print?"谢谢"

print?"第一种方法"
people_count('38','48')

print?"第二种方法"
girl_count?=?10
boy_count?=?20
people_count(girl_count,boy_count)

print?"第三种方法"
people_count(88+1,99+1)

print?"第四种方法"
people_count(girl_count+1,boy_count+1)

print?"第五种方法"
girl?=?11
boy?=?22
people_count(girl,boy)

常见问题回答

怎么能有 10 种不同的方式运行一个函数呢?

信不信由你,理论上有无穷多种方法运行一个函数。在这里,试着按我在 8-12 行的方式运行,当

然你可以随意创新。

有没有办法可以分析这个函数的功能以便我理解?

有很多方法,最简单的一个是在每一行代码上面添加注解,另外一个方法是大声朗读代码,还有一个方法就是把代码打印出来,用笔画一些图示,并写一些注解说明。

怎样处理用户输入的数字,例如我想让用户输入克力架和奶酪的数量?

记住使用 int() 把 raw_input() 的值转为整数。

第 13 和 14 行创建的变量会不会改变函数中的变量?

不会。这些变量是在函数之外的,当它们被传递到函数中以后,函数会为这些变量创建一些临时的版本,当函数运行结束后,这些临时变量就被丢弃了,一切又回到了从前。继续阅读本书,后面你会更清楚这些概念。

把全局变量(如 13 、 14 行)的名称和函数变量的名称取成一样的,这样做是不是不好?

是的,因为这样的话你就无法确定哪个是哪个了。有时候你可能会必须使用同一个变量名,有时候你会不小心使用了一样的变量名,不论如何,只要有可能,还是尽量避免变量名称相同吧。

第 12-19 行是不是覆写了函数 cheese_and_crackers?

没有,完全没有。这只是函数调用而已。基本上就是这里会跳转到函数的第一行,然后等函数运行完后再回到先前的位置。并没有把原函数怎么地。

函数的参数个数有限制吗?

取决于 Python 的版本和你的操作系统,不过就算有限,限值也是很大的。实际应用中, 5 个参数

就不少了,再多就会让人头疼了。

可以在函数中调用函数吗?

可以。后面的习题中你会用这一技巧写一个游戏。


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读