设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 28801|回复: 8
打印 上一主题 下一主题

【Python 第22课】 函数应用示例

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
楼主
发表于 2014-4-24 18:22:13 |显示全部楼层 |倒序浏览
前两课稍稍介绍了一下函数,但光说概念还是有些抽象了,今天就来把之前那个小游戏用函数改写一下。

我希望有这样一个函数,它比较两个数的大小。
如果第一个数小了,就输出“too small”
如果第一个数大了,就输出“too big”
如果相等,就输出“bingo”

函数还有个返回值,当两数相等的时候返回True,不等就返回False。

于是我们来定义这个函数:

def isEqual(num1, num2):
   if num1<num2:
       print 'too small'
       return False
   if num1>num2:
       print 'too big'
       return False
   if num1==num2:
       print 'bingo'
       return True

这里说一下,return是函数的结束语句,return后面的值被作为这个函数的返回值。函数中任何地方的return被执行到的时候,这个函数就会结束。

然后在我们的小游戏里使用这个函数:
from random import randint
num = randint(1, 100)
print 'Guess what I think?'
bingo = False
while bingo == False:
   answer = input()
   bingo = isEqual(answer, num)

在isEqual函数内部,会输出answer和num的比较结果,如果相等的话,bingo会得到返回值True,否则bingo得到False,循环继续。
22.jpeg


函数可以把某个功能的代码分离出来,在需要的时候重复使用,就像拼装积木一样,这会让程序结构更清晰。

#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2015-3-3 10:56:56 |显示全部楼层
xiaohuzai 发表于 2015-3-3 09:38
我看您在写函数的时候,每个if语句是用分号;隔开,我在写函数的时候没有用分号,但是也能运行,请问这个有 ...

啊,那个分号是笔误,已改
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

板凳
发表于 2015-12-30 15:40:38 |显示全部楼层
catherinemic 发表于 2015-12-29 15:33
有意思,这样更简洁了~~
Crossin老师,能否再讲讲函数的结束是什么意思呢,感觉就是返回一个值,前面也用到 ...

你让函数做一件事,就是调用函数。
你让函数做一件事,完了告诉给你一个结果,就是调用带返回值的函数。
函数的返回值可以直接赋值给其它变量
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2016-8-22 09:26:22 |显示全部楼层
jinss 发表于 2016-8-21 19:56
def isEqual(num1,num2):
    if num1num2:
        print('too big')

你是python3吧,python3 input得到的是字符串,不能直接比较,要转换成数字
answer=int(input())
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

5#
发表于 2017-8-13 12:59:22 |显示全部楼层
枫叶落时 发表于 2017-8-12 22:52
from random import randint
Answer=randint(1,100)
totoal=11

你想想逻辑,这里不是两层循环嵌套,只是一层循环,但要满足两个条件。
while的条件改一下
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

6#
发表于 2018-2-2 18:45:00 |显示全部楼层
wwyy4ever 发表于 2018-2-2 15:37
请问老师,您给出的这段实例里,answer=input(),这个括号里面不能添加内容了吧 ...

可以添加,添加的内容是输入前的提示语
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

7#
发表于 2018-2-5 14:40:31 |显示全部楼层
wwyy4ever 发表于 2018-2-5 10:16
我就在括号里写了‘请输入数字’,然后不管输入什么数字都是too big

输入的数字不要加引号
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

8#
发表于 2018-4-6 00:06:48 |显示全部楼层
司南 发表于 2018-4-5 21:47
老师您好,有个问题想请教您,感觉最后的else怪怪的,但又不知道,一旦没有这个else,如果在x=y时,print一 ...

这样用else也没错

不用这个else,直接顶格 print ,也可以同样效果
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

9#
发表于 2018-5-11 22:14:00 |显示全部楼层
return True
或者
return False

别加引号。原因看 bool类型转换 那课
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-6 23:32 , Processed in 0.029156 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部