请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 26647|回复: 23

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

[复制链接]

174

主题

45

好友

10万

积分

管理员

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
回复

使用道具 举报

0

主题

0

好友

505

积分

高级会员

Rank: 4

发表于 2015-3-3 09:38:36 |显示全部楼层
我看您在写函数的时候,每个if语句是用分号;隔开,我在写函数的时候没有用分号,但是也能运行,请问这个有影响吗?
  1. def isEqual(num1,num2):
  2.     if num1<num2:
  3.         print 'too small'
  4.         return False
  5.     if num1>num2:
  6.         print 'too big'
  7.         return False
  8.     if num1==num2:
  9.         print 'bingo'
  10.         return True
复制代码
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

使用道具 举报

0

主题

0

好友

36

积分

新手上路

Rank: 1

发表于 2015-3-12 21:55:52 |显示全部楼层
  1. #coding:utf-8
  2. #猜数游戏2.0
  3. #zzx 2015.03.12
  4. print '-------------------------欢迎光临新新猜数游戏,猜中了有大奖哦!-------------------'
  5. print '规则:1-10的整数,随机一个'
  6. from random import randint
  7. num = randint(1,11)
  8. flag = True
  9. #比较两数是否相等               
  10. def isEqual(input_num,num) :
  11.                 if input_num < num :
  12.                                 print '您输入的数是:%d,小了哦' %input_num
  13.                                 return True
  14.                 elif input_num > num :
  15.                                 print '您输入的数是:%d,大了哦' %input_num
  16.                                 return True
  17.                 elif input_num == num :
  18.                                 print '您输入的的数是:%d,您很厉害啊,猜对了,亲亲!' %input_num
  19.                                 return False
  20. #循环猜数       
  21. while flag:
  22.                 input_num =int(raw_input('输入你心仪的数吧:'))
  23.                 flag = isEqual(input_num,num
复制代码
回复

使用道具 举报

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

发表于 2015-12-29 15:33:57 |显示全部楼层

有意思,这样更简洁了~~ Crossin老师,能否再讲讲函数的结...

本帖最后由 catherinemic 于 2015-12-29 15:41 编辑
  1. def isEqual(num1,num2):
  2.     if num1<num2:
  3.         print 'Too small!'
  4.         return False
  5.     if num1>num2:
  6.         print 'Too big!'
  7.         return False
  8.     if num1==num2:
  9.         print 'BINGO!'
  10.         return True
  11. print 'Guess what I think?'
  12. from random import randint
  13. num1=randint(1,100)
  14. bingo= False
  15. while bingo==False:
  16.     answer=input()
  17.     bingo=isEqual(answer,num1)
复制代码
有意思,这样更简洁了~~
Crossin老师,能否再讲讲函数的结束是什么意思呢,感觉就是返回一个值,前面也用到过函数,但是定义的时候并没有写return多少,只是print一些东西,那什么时候需要定义return,什么时候不需要呢?
Python10.png
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

使用道具 举报

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

发表于 2015-12-31 11:15:19 |显示全部楼层
crossin先生 发表于 2015-12-30 15:40
你让函数做一件事,就是调用函数。
你让函数做一件事,完了告诉给你一个结果,就是调用带返回值的函数。
...

调用带返回值的函数,明白啦,谢谢crossin老师~~
回复

使用道具 举报

0

主题

0

好友

56

积分

注册会员

Rank: 2

发表于 2016-8-21 19:56:03 |显示全部楼层
本帖最后由 jinss 于 2016-8-21 19:58 编辑

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
from random import randint
num=randint(1,100)
print('Guess what I think?')
bingo=False
while bingo==False:
    answer=input()
    bingo = isEqual(answer,num)
Guess what I think?
8

Traceback (most recent call last):
  File "F:/python/py22_1.txt", line 17, in <module>
    bingo = isEqual(answer,num)
  File "F:/python/py22_1.txt", line 2, in isEqual
    if num1<num2:
TypeError: unorderable types: str() < int()    为啥呀?



回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

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
回复

使用道具 举报

0

主题

0

好友

56

积分

注册会员

Rank: 2

发表于 2016-8-22 21:08:32 |显示全部楼层
crossin先生 发表于 2016-8-22 09:26
你是python3吧,python3 input得到的是字符串,不能直接比较,要转换成数字
answer=int(input()) ...

是的!是的!谢谢老师!
回复

使用道具 举报

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

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

GMT+8, 2024-3-29 10:22 , Processed in 0.026959 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部