3.1 def语句和参数

def ...(...)语句用于定义一个函数,以便后面调用函数,如:

def hello(name): #定义函数hello,变元name

print('hello' + name) #打印hello+变元name

namein = input() #定义namein变量,从键盘取值并赋给namein

hello(namein) #调用hello函数,将namein的变量赋值给变元name。

需注意:函数被调用并返回后,在变元中的值就丢失了。

3.2 返回值和return语句

def语句创建函数时,可以用return语句指定应该返回什么值,如

import random

def getAnswer(answerNumber): #定义一个函数getAnswer,变元answerNumber

if answerNumber == 1:

return 'It is certain' #当变元为1时,打印这个结果,下述同理。

elif answerNumber == 2:

return 'It is decidedly so'

elif answerNumber == 3:

return 'Yes'

elif answerNumber == 4:

return 'Reply hazy try again'

elif answerNumber == 5:

return 'Ask again later'

elif answerNumber == 6:

return 'Concertrate and ask again'

elif answerNumber == 7:

return 'My reply is no'

elif answerNumber == 8:

return 'Outlook not so good'

elif answerNumber == 9:

return 'Very doubtful'

r = random.randint(1, 9) #定义变量r,调用内建函数random,其范围是1到9

fortune = getAnswer(r) #运行自建函数getAnswer,变元值为r。

print(fortune) #打印fortune中的存储结果

3.3 None值

None表示没有值,是NoneType数据类型的唯一值。

注意,print()函数是没有返回值的,与none值相同。

可以通过:

spam = print('Hello')

None == spam

#返回结果为True得出。

3.4关键字参数和print()

关键字是由在调用函数时选用的,通常用于可选变元。

如print中的 end、, 、seq函数。

#end=''

print('Hello',end=' ')

print('World')

结果→→Hello World

# ','

print('Cat','Dog','Mice')

结果→→Cat Dog Mice

# seq = ''

print('Cat','Dog','Mice',sep=',')

结果→→Cat,Dog,Mice

3.5 局部和全局作用域

全局指在本程序中一直生效,局部是指在程序的某一个局部中生效,如果退出局部则失效。

def spam():

eggs = 99 #局部变量1

bacon() #此处局部变量2会被打印,对于spam()来说,这里就是局部

print(eggs) #此处打印结果为99,因为bacon()执行后,bacon()中的局部变量失效了

def bacon():

ham = 101

eggs = 0 #局部变量2

spam()

bacon()

全局变量可以和局部变量重名,但我们尽量让他们之间不要重名。

***

def spam():

print(eggs)

eggs = 42 #全局变量1

spam()

print(eggs)

上代码中的局部变量eggs在

打印时引用了全局变量。

总结:全局会被局部引用,局部不会被全局引用,要想运行轻松点,就要注意别重名啦。

3.6 global语句

为函数命名时加上global语句如“global eggs = 1”,就可以让python知道在这代码全局中所有的eggs函数都值都为1。

函数中一个人变量要么总是全局变量,要么总是局部变量。

3.7 异常处理

由于你不知道用户输入的变元是什么,所以你需要在他们执行前执行一次检查,以免程序直接出错跳出。

#CODE

def spam(divideBy):

try:

return 42 / divideBy

except ZeroDivisionError:

print('错误:无效输入')

print(spam(2))

print(spam(12))

print(spam(0))

print(spam(1))

#OUTPUT

21.0

3.5

错误:无效输入

None

42.0

3.8 猜数字游戏

#This is a guess number game.

import random

SecretNumber = random.randint(1,20)

print('I have a number, come on and guess.')

#print('PLZ enter a number.')

#Ask the player to guess 6 times.

for guessesTaken in range(1,7):

print('PLZ enter a number.')

guess = int(input())

if guess < SecretNumber:

print('Your number is too low.')

elif guess > SecretNumber:

print('Your number is too high.')

else:

break # This condition is the correct guess!

if guess == SecretNumber:

print('Good job! You guessed my number in ' + str(guessesTaken) + ' times.')

else:

print('Nope. The number I was thinking of was ' + str(SecretNumber))

3.9 本章习题

1.为什么在程序中加入函数会有好处?

函数快,可以消除重复,让代码更短,读起来也更容易。

2.函数中的代码何时执行:在函数被定义时,还是在函数被调用时?

在函数被调用时执行。

3.什么语句创建一个函数?

def语句创建函数。

4.一个函数和一次函数调用有什么区别?

函数是一个开头为def的语句,它包含函数名和函数体。如def guess()

而函数之后的guess()是一次函数调用,只有当代码执行到guess()时,才会调用函数def guess()下面的函数体。

5.Python 程序中有多少全局作用域?有多少局部作用域?

在调用函数时,创建了一个全局作用域和一个局部作用域。

6.当函数调用返回时,局部作用域中的变量发生了什么?

清空。

7.什么是返回值?返回值可以作为表达式的一部分吗?

返回值即函数执行结束后的返回结果,他可以作为表达式的一部分。

8.如果函数没有返回语句,对它调用的返回值是什么?

None

9.如何强制函数中的一个变量指的是全局变量?

global xxx 则 xxx 被强制为一个全局变量。

10.None 的数据类型是什么?

none.type

11.import areallyourpetsnamederic 语句做了什么?

导入了一个名为areallyourpetsnamederic的函数,

12.如果在名为 spam 的模块中,有一个名为 bacon()的函数,在引入 spam 后,如何调用它?

spam.bacon()

13.如何防止程序在遇到错误时崩溃?

try

except

函数进行验证

14.try 子句中发生了什么?except 子句中发生了什么?

try句子中运行了你的表达式,如果产生错误,则转到except。

之后程序照常运行。

3.11 代码实践

3.11.1

编写一个名为 collatz()的函数,它有一个名为 number 的参数。如果参数是偶数,那么 collatz()就打印出 number // 2,并返回该值。如果 number 是奇数,collatz()就打印并返回 3 * number + 1。

然后编写一个程序,让用户输入一个整数,并不断对这个数调用 collatz(),直到函数返回值1(令人惊奇的是,这个序列对于任何整数都有效,利用这个序列,你迟早会得到 1!既使数学家也不能确定为什么。你的程序在研究所谓的“Collatz序列”,它有时候被称为“最简单的、不可能的数学问题”)。

记得将 input()的返回值用 int()函数转成一个整数,否则它会是一个字符串。 提示 如果 number % 2 == 0,整数 number 就是偶数,如果 number % 2 == 1,它就是奇数。

这个程序的输出看起来应该像这样:

Enter number:

3

10

5

16

8

4

2

1

def collatz(dd):

global number

number = dd

while number != 1:

if number % 2 == 0:

number = number // 2

print(number)

elif number % 2 == 1:

number = number * 3 + 1

print(number)

3.11.2

在前面的项目中添加 try 和 except 语句,检测用户是否输入了一个非整数的字符串。正常情况下,int()函数在传入一个非整数字符串时,会产生 ValueError 错误,比如 int('puppy')。在 except 子句中,向用户输出一条信息,告诉他们必须输入一个整数。

try:

nm1 = int(input('请输入一个数字\n'))

except ValueError:

print('请输入正确的数字!')

else:

print(collatz(nm1))

猜数字游戏python程序用函数guesssecret_Python-三、函数相关推荐

  1. 猜数字游戏python程序_Python猜数游戏,程序随机生成一个0-100的数,猜对后退出【实例源码】...

    Python猜数字游戏: 写程序,随机生成一个0~100之间的数用变量x绑定 循环让用户输入一个数用y绑定, 输出猜数字的结果 1. 如果y等于生成的数x,则提示"您猜对了", 打 ...

  2. 猜数字游戏python程序_python实现的简单猜数字游戏

    本文实例讲述了python实现的简单猜数字游戏.分享给大家供大家参考.具体如下: 给定一个1-99之间的数,让用户猜数字,当用户猜错时会提示用户猜的数字是过大还是过小,知道用户猜对数字为止,猜对数字用 ...

  3. 猜数字游戏python程序_python经典小程序:猜数字游戏

    #猜数字游戏 import random #impor语句导入random模块 guessor=0;print("#"*30) #输出30个"#"(" ...

  4. 猜数字游戏python程序gui_python GUI 猜数字游戏

    # -*- coding:utf-8 -*- import easygui,random status = easygui.buttonbox("这是一个猜数字游戏,点击开始进行游戏,点击退 ...

  5. 猜数字游戏python程序用函数guesssecret_python实现猜数字游戏

    说明: 本例改编自<Python编程快速上手>.例子很简单我就不多说了 直接上代码,给初学python练手用. 给你6次机会猜对一个预先生成好的1-20之间的整数.覆盖一下知识点: 条件语 ...

  6. 猜数字游戏-小程序组件-基础入门

    效果展示 1.创建页面文件 首页:index.wxml 开始游戏:game.wxml 游戏规则:rules.wxml 关于我们:about.wxml 需修改aoo.json文件内的pages属性 {& ...

  7. java猜数字游戏应用程序_猜数字游戏的Java小程序

    /* 猜数字游戏: 1,产生随机数. 2,获取键盘录入. 3,将录入数据变成数字,和随机数比较. 给出提示信息. 4,重复这个过程,如果猜中,程序就结束. 注意:对于输入1~100以外的数字,,以及非 ...

  8. 猜数字游戏python 当用户输入的不是整数是程序退出_Python基础第一个案例:猜数字游戏,这个都写不出,那就放弃吧...

    前言 本文案例只适合新手,老司机请绕路. 游戏介绍: 程序自己有一个数字,用户输入一个数字,两个数字进行比较. 知识点:input函数 字符串 while循环 if条件判断语句 break语句 开始撸 ...

  9. c语言猜数字游戏用while,用C语言实现猜数字游戏

    本文实例为大家分享了C语言实现猜数字的具体代码,供大家参考,具体内容如下 问题:计算机随机生成一个数字,用户进行猜数字,当用户猜错时,提醒用户猜高/猜低,直到用户猜的数字与计算机给的随机数一致时,提示 ...

最新文章

  1. [unreal4入门系列之二] 下载和安装虚幻4游戏引擎
  2. Java中的DatagramPacket与DatagramSocket的初步
  3. Java 中 String 的常用方法(二)
  4. win7录制系统声音 加入立体声混音 camtasia recorder录屏
  5. 【每日一题】7月16日题目精讲—点权和
  6. php mysql grant_mysql grant命令详解_MySQL
  7. 新工科背景下大数据专业导论课程的改革与探索
  8. Linux应用调试-strace命令
  9. eclipse汉化方法
  10. MCMC算法—MH算法的Python实现(一)
  11. JSP实战项目教程|基于JSP的学生请假系统开发视频教程
  12. 零基础学前端系列教程 | 和前端谈恋爱的第004天——打扮漂亮
  13. 转一篇帖子-我是如何在网上卖鱼的
  14. 有趣的 Kotlin 0x02:Indent trimming
  15. 洛谷 P1007 独木桥 题解 C语言,C++
  16. 【latex入门】基本语法|常见报错
  17. 特征工程与表示学习:人工 vs 自动
  18. sql server2008 批量删除发生:查询处理器用尽了内部资源,无法生成查询计划。这种情况很少出现,只有在查询极其复杂或引用了大量表或分区时才会出现。请简化查询
  19. git bash 下 pacman 环境配置
  20. 无法打开物理文件 XXX.mdf,操作系统错误 5:5(拒绝访问。)的解决办法

热门文章

  1. 业务单号自动增长的处理办法
  2. 网管日志-06.07.24
  3. python pca降维_机器学习的降维打击
  4. 项目管理十大知识领域,为何不含
  5. 深入理解Scala的隐式转换系统
  6. Oracle 自带sqldeveloper导入数据到表
  7. 查看进程占用,并kill掉
  8. 陶晶驰stm32_陶晶驰串口屏学习日记(1)
  9. c++ 复制构造函数_C++学习刷题8--复制构造函数和赋值运算符重载函数
  10. c mysql使用场景_Mysql 场景