设为首页收藏本站

Crossin的编程教室

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

【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

24#
发表于 2018-5-11 22:14:00 |只看该作者
return True
或者
return False

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

使用道具 举报

0

主题

0

好友

28

积分

新手上路

Rank: 1

23#
发表于 2018-5-11 21:01:38 |只看该作者
函数.png
请问,我的为什么直接一个数字就结束,不知道问题出在哪里?
回复

使用道具 举报

0

主题

2

好友

72

积分

注册会员

Rank: 2

22#
发表于 2018-4-6 10:14:13 |只看该作者
crossin先生 发表于 2018-4-6 00:06
这样用else也没错

不用这个else,直接顶格 print ,也可以同样效果

多谢老师,试过之后果然如此,只要num!=guess,那么就会一直执行while循环,直到二者相等,才会结束循环,执行后面的print。
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

21#
发表于 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
回复

使用道具 举报

0

主题

2

好友

72

积分

注册会员

Rank: 2

20#
发表于 2018-4-5 21:47:39 |只看该作者
  1. import random
  2. num=random.randint(1,5)
  3. guess=eval(input('guess what I think?'))
  4. def compare(x,y):
  5.     if x<y:
  6.         print('%d is too small' %x)
  7.     elif x>y:
  8.         print('%d is too big' %x)
  9.     else:
  10.         print('bingo')
  11.     return x==y
  12. while num!=guess:
  13.     compare(guess,num)
  14.     guess=eval(input('guess what I think?'))
  15. else:
  16.     print('bingo')
复制代码
老师您好,有个问题想请教您,感觉最后的else怪怪的,但又不知道,一旦没有这个else,如果在x=y时,print一个bingo
之前一直在贴吧跟您学习,但不知道为啥,被系统永远封禁了,所以转战到这里。
回复

使用道具 举报

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

19#
发表于 2018-2-23 17:31:30 |只看该作者
Tmyueee 发表于 2018-2-23 11:14
MAC 3.6.4

def isEqual(num1,num2):

标识符中有无效字符,标红num说明在num附近,刚粘贴你代码试了下,num前的逗号改成英文字符就行了

参考链接 http://blog.csdn.net/yeyue0922/a ... tionNum=6&fps=1
回复

使用道具 举报

0

主题

0

好友

4

积分

新手上路

Rank: 1

18#
发表于 2018-2-23 11:14:05 |只看该作者
MAC 3.6.4

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 = int(input())
    bingo = isEqual(answer,num)

然后 Run Module
"invalid character in identifier"
最后的num被框红了

不知道该怎么办
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

17#
发表于 2018-2-5 14:40:31 |只看该作者
wwyy4ever 发表于 2018-2-5 10:16
我就在括号里写了‘请输入数字’,然后不管输入什么数字都是too big

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

使用道具 举报

2

主题

0

好友

60

积分

注册会员

Rank: 2

16#
发表于 2018-2-5 10:16:41 |只看该作者
crossin先生 发表于 2018-2-2 18:45
可以添加,添加的内容是输入前的提示语

我就在括号里写了‘请输入数字’,然后不管输入什么数字都是too big
回复

使用道具 举报

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

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

GMT+8, 2024-11-22 07:28 , Processed in 0.017788 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部