Crossin的编程教室

标题: 【Python 第21课】 函数的参数 [打印本页]

作者: crossin先生    时间: 2014-4-24 18:16
标题: 【Python 第21课】 函数的参数
今天发现了一个iPad上的游戏,叫Cargo-Bot。这个游戏需要你用指令控制一个机械臂去搬箱子。游戏里蕴含了很多编程的思想,包括循环、函数调用、条件判断、寄存器、递归等等,挺有意思的。更厉害的是,这个游戏是用一个叫Codea的app直接在iPad上编写出来的。有iPad的同学不妨玩玩看,挑战一下你的“程商”。

言归正传,在19课里,我们讲了怎样定义一个自己的函数,但我们没有给他提供输入参数的功能。不能指定参数的函数就好比你去餐厅吃饭,服务员告诉你,不能点菜,有啥吃啥。这显然不能满足很多情况。

所以,如果我们希望自己定义的函数里允许调用者提供一些参数,就把这些参数写在括号里,如果有多个参数,用逗号隔开,如:

def sayHello(someone):
   print someone + ' says Hello!'

或者

def plus(num1, num2):
   print num1+num2

参数在函数中相当于一个变量,而这个变量的值是在调用函数的时候被赋予的。在函数内部,你可以像过去使用变量一样使用它。

调用带参数的函数时,同样把需要传入的参数值放在括号中,用逗号隔开。要注意提供的参数值的数量和类型需要跟函数定义中的一致。如果这个函数不是你自己写的,你需要先了解它的参数类型,才能顺利调用它。

比如上面两个函数,我们可以直接传入值:

sayHello('Crossin')
还是注意,字符串类型的值不能少了引号。

或者也可以传入变量:

x = 3
y = 4
plus(x, y)

在这个函数被调用时,相当于做了num1=x, num2=y这么一件事。所以结果是输出了7。


作者: cross    时间: 2015-4-21 11:22
def sayHello(someone):
   print someone + ' says Hello!'
作者: lovia    时间: 2015-5-27 20:37
  1. def select_max(num1,num2):
  2.     if num1<num2:
  3.         print "%s>%s"%(num2,num1)
  4.     else:
  5.         print "%s<%s"%(num2,num1)
  6. print "input two numbers to compare which one is max"
  7. print "input number1,and enter do the next"
  8. num1=input()
  9. print "input number2,and enter do the result"
  10. num2=input()
  11. select_max(num1,num2)
复制代码

作者: catherinemic    时间: 2015-12-29 15:09
  1. def select_max(num1,num2):
  2.     if num1<num2:
  3.         print '%s>%s'%(num2,num1)
  4.     else:
  5.         print '%s>%s'%(num1,num2)
  6. print "Let's compare numbers!"
  7. print 'please enter the first number:'
  8. num1=input()
  9. print 'please enter the second number:'
  10. num2=input()
  11. select_max(num1,num2)
复制代码
为什么我输入的值是整数,可是字符串格式化的时候%后面写s, d或.of都可以得到正确答案呢?
作者: crossin先生    时间: 2015-12-30 15:41
catherinemic 发表于 2015-12-29 15:09
为什么我输入的值是整数,可是字符串格式化的时候%后面写s, d或.of都可以得到正确答案呢? ...

程序自动帮你做了一次类型转换,把int转成了str或者float
作者: catherinemic    时间: 2015-12-31 11:14
crossin先生 发表于 2015-12-30 15:41
程序自动帮你做了一次类型转换,把int转成了str或者float

懂了,谢谢crossin老师~~
作者: 对不起我是保镖    时间: 2016-4-5 19:28
本帖最后由 对不起我是保镖 于 2016-4-7 10:08 编辑


捕获.PNG
作者: 对不起我是保镖    时间: 2016-4-7 10:08
crossin先生 发表于 2016-4-5 20:04
求别地域黑

连续两次被郑州人骗。内心苦啊。。唉


现在没那么生气了。。我把帖子删掉
作者: Killuia    时间: 2016-5-5 21:39
刚才尝试了
def sayHello(someone):
    print someone+ ' ''says Hello!'

sayHello('Mike')
sayHello('Nick')
sayHello('Soul')
之前第一次觉得直接输出的结果名字后面没有空一格强迫症发作,摸索着想加一个空格,试了几次后醒悟,普通的一个空格在命令中是没有意义的,要将它变成字符串才可以显示出来,嗯好了,我自我满足一阵先




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5