Python语言程序设计 习题8

一、选择题

1.下列选项中不属于函数优点的是(   D  )。

A.减少代码重复                 

B.使程序模块化

C.使程序便于阅读               

D.便于发挥程序员的创造力

2.关于函数的说法中正确的是(  B    )。

A.函数定义时必须有形参

B.函数中定义的变量只在该函数体中起作用

C.函数定义时必须带return语句

D.实参与形参的个数可以不相同,类型可以任意

3.以下关于函数说法正确的是(   D   )。

A.函数的实际参数和形式参数必须同名

B.函数的形式参数既可以是变量也可以是常量

C.函数的实际参数不可以是表达式

D.函数的实际参数可以是其他函数的调用

4.关于装饰器,下列说法中错误的是(   D   )。

A.装饰器是用来包装函数的函数

B.装饰器有利于实现代码的复用

C.装饰器中一定要返回一个函数对象

D.一个函数只能用一个装饰器修饰

5.调用装饰器的格式是(   B   )。

A.#装饰器名        B.@装饰器名       C.$装饰器名     D.%装饰器名

6.有以下两个程序。

程序一:

x=[1,2,3]
def f(x):
    x=x+[4]   #不同点
f(x)
print(x)

程序二:

x=[1,2,3]
def f(x):
    x+=[4]  #不同点
f(x)
print(x)

下列说法正确的是(   A   )。

A.两个程序均能正确运行,但结果不同

B.两个程序的运行结果相同

C.程序一能正确运行,程序二不能

D.程序一不能正确运行,程序二能

运行结果:

程序一: 

程序二:

x=[1,2,3]
def f(x):
    print(id(x))  #操作前的地址2
    x=x+[4]   #不同点
    print(id(x))  #操作后的地址3

print(id(x))  #传递参数之前的地址1
f(x)
print(id(x))  #传递参数之后的地址4
print(x)

由输出可知,我们在进行了函数体内的操作后,x的地址发生了变化,我们接着看第二组代码:

x=[1,2,3]
def f(x):
    print(id(x))  #操作前的地址2
    x += [4]  # 不同点
    print(id(x))  #操作后的地址3

print(id(x))  #传递参数之前的地址1
f(x)
print(id(x))  #传递参数之后的地址4
print(x)

 

 x的地址始终没有变化

解释:Python 运算符 + 与 +=

7.已知f=lambda x,y:x+y,则f([4],[1,2,3])的值是(  C    )。

A.[1, 2, 3, 4]        B.10       C.[4, 1, 2, 3]     D.{1, 2, 3, 4}

f=lambda x,y:x+y
print(f([4],[1,2,3]))

lambda函数又叫匿名函数,返回值时表达式的运算结果。以冒号为分隔,冒号前面的是参数,后面的是表达式。 

8.下列程序的运行结果是(   D   )。 
 

f=[lambda x=1:x*2,lambda x:x**2]
print(f[1](f[0](3)))

  A.1                B.6              C.9           D.36

首先列表f有两个元素,分别是f[0]和f[1],然后print函数中首先调用f[1],参数是f[0](3)。因为参数是一个函数,所以先运算参数。

f[0]的函数是一个有默认值的函数,有默认值的函数如果不提供参数,参数就取默认值,否则取参数值。这里提供了参数为3,经过运算得6,然后代入函数f[1]即可。

9.下列程序的运行结果是(   B   )。

def f(x=2,y=0):
    return x-y
y=f(y=f(),x=5)
print(y)

A.-3           B.        C.2          D.5 

注意这里使用了关键字参数。

10.output.py文件和test.py文件内容如下,且output.py和test.py位于同一文件夹中,那么运行test.py的输出结果是(   A   )。

#output.py
def show():
    print(__name__)
#test.py
import output
if __name__=='__main__':
    output.show()

A.output           B.__name__         C.test          D.__main__

二、填空题

1.函数首部以关键字    def    开始,最后以     冒号   结束。

2.函数执行语句“return [1,2,3],4”后,返回值是     ([1, 2, 3], 4)   ;没有return语句的函数将返回    None    。p147

如果函数返回多个值,那么就把这些值当成一个元组返回。

def f():
    return [1,2,3],4
print(f())

3.使用关键字    global   可以在一个函数中设置一个全局变量。

4.下列程序的输出结果是:

before f1

f1

before f1

def deco(func):
    print('before f1')
    return func
@deco
def f1():
    print('f1')
f1()
f1=deco(f1)

5.下列程序的输出结果是4 0

counter=1
num=0
def TestVariable():
    global counter
    for i in (1,2,3):counter+=1
    num=10
TestVariable()
print(counter,num)

6.设有f=lambda x,y:{x:y},则f(5,10)的值是   {5: 10}     。

7.Python包含了数量众多的模块,通过  import   语句,可以导入模块,并使用其定义的功能。

8.设Python中有模块m,如果希望同时导入m中的所有成员,则可以采用    from m import *    的导入形式。

9.Python中每个模块都有一个名称,通过特殊变量  __name__      可以获取模块的名称。特别地,当一个模块被用户单独运行时,模块名称为  __main__     。

10.建立模块a.py,模块内容如下。

def B():
    print('BBB')
def A():
    print('AAA')

为了调用模块中的A()函数,应先使用语句 from a import A 

三,问答题

1.什么叫递归函数?举例说明。p155

递归函数是指一个函数的函数体中又直接或间接地调用该函数本身的函数。

比如求n的阶乘:

def getN(n):
    if n==1:
        return 1
    return n*getN(n-1)

print(getN(3))

2.什么叫lambda函数?举例说明。p154

使用lambda关键字可以在同一行内定义函数,可以不用指定函数名。

格式:

lambda [参数1[,参数2,……,参数n]]:表达式

返回值就是表达式的值。

例如:

f=lambda x,y:x+y
print(f(2,3))

 3.什么叫装饰器?他有什么作用?

装饰器分为无参装饰器与有参装饰器。

可以理解为,为已经存在的函数添加额外功能的函数。

def improve_func(func):
    def improve():
        print("is improved")
        return func()
    return improve

def func():
    print("abc")

@improve_func
def func2():
    print("def")

#方法1
func=improve_func(func)
func()

#方法2
func2()

4.什么叫模块?如何导入模块?

(1)使用import语句

import  模块名

使用时需要模块名.函数,例如:

import math

print(math.e)

(2)使用from-import语句,只能导入一个函数

from  模块名  import  函数名

使用时直接用函数就行

from math import pow

print(pow(2,3))

(3)依旧是使用from-import语句,但是导入全部函数

from  模块名  import  *

from math import *

print(pow(2,3))
print(e)

5.写出下列程序的输出结果。

def ff(x,y=100):
    return {x:y}
print(ff(y=10,x=20))

 6.分析下面的程序。

x=10
def f():
    #y=x
    x=0
    print(x)
print(x)
f()

(1)函数f()中的x和程序中的x是同一个变量吗?程序的输出结果是什么?

不是一个变量


(2)删除函数f()中第一一个语句前面的“#”,此时运行程序会出错,为什么?

x=10
def f():
    y=x
    x=0
    print(x)

print(x)
f()

这个错误是提示你引用了一个没有分配的变量。
在Python中,如果你在一个作用域定义了某变量,那外部的变量就会被屏蔽。考虑下面的例子:

x=3
def func():
  x = x + 3
func()

运行代码则会报错local variable ‘x’ referenced before assignment
原因是我们调用func()的时候想要得到x+3,但是表达式从左向右,在x=的时候已经默许了x是local variable,因此外部作用域的x=3是被屏蔽的。所以x+3中的x相当于一个没有赋值的变量,从而报错。

(3)删除函数f()中第一个语句前面的“#”,同时在函数f()中第二个语句前面加“#”,此时程序能
正确运行,为什么?写出运行结果。

x=10
def f():
    y=x
    #x=0
    print(x)

print(x)
f()

 


 

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 非常感谢您的提问。Python语言程序设计基础程序练习题是一系列针对Python编程语言的基础练习题,旨在帮助初学者掌握Python编程语言的基本语法和编程技巧。这些练习题涵盖了Python编程的各个方面,包括变量、数据类型、条件语句、循环语句、函数、模块等等。通过完成这些练习题,学习者可以逐步提高自己的编程能力,掌握Python编程的基本技能,为以后深入学习Python编程打下坚实的基础。 ### 回答2: Python语言是一种简洁且灵活的脚本语言,已经成为许多计算机科学领域的首选语言Python语言有着丰富的标准库和第三方库,这些库能够轻松地完成各种任务,使得Python语言非常适合学习和使用。 Python语言程序设计基础程序练习题可以帮助初学者提高他们的Python编程技能。下面介绍几个简单的Python程序练习,帮助初学者快速上手,提高Python编程技能。 1. 编写一个程序,求1到100之间的所有偶数之和。 解题思路:使用for循环进行遍历,求出所有偶数的和。 ```python sum = 0 for i in range(2, 101, 2): sum += i print("1到100之间的所有偶数之和 =", sum) ``` 2. 编写一个程序,计算任意两个数字之间的和。 解题思路:输入两个数字,使用循环将它们之间的所有数字加起来。 ```python num1 = int(input("请输入第一个数字:")) num2 = int(input("请输入第二个数字:")) sum = 0 for i in range(num1, num2+1): sum += i print(num1, "到", num2, "之间所有数字之和 =", sum) ``` 3. 编写一个程序,计算任意两个数字之间的乘积。 解题思路:输入两个数字,使用循环将它们之间的所有数字相乘。 ```python num1 = int(input("请输入第一个数字:")) num2 = int(input("请输入第二个数字:")) product = 1 for i in range(num1, num2+1): product *= i print(num1, "到", num2, "之间所有数字的乘积 =", product) ``` 4. 编写一个程序,判断一个数是否为质数。 解题思路:如果一个数只能被1和它本身整除,那么这个数就是质数。 ```python num = int(input("请输入一个数字:")) if num < 2: print(num, "不是质数") else: for i in range(2, num): if num % i == 0: print(num, "不是质数") break else: print(num, "是质数") ``` 5. 编写一个程序,将一个字符串倒序输出。 解题思路:使用字符串切片[::-1]即可实现字符串倒序输出。 ```python str = input("请输入一个字符串:") print("倒序输出字符串 =", str[::-1]) ``` 以上是几个简单的Python程序练习,通过这些练习可以提高初学者的Python编程水平。随着学习的深入,可以逐渐挑战更难的Python编程练习,掌握更多的Python编程技能。 ### 回答3: Python语言程序设计是一门非常有用的编程语言,而程序练习题则是Python语言程序设计非常重要的一步。通过对基础程序练习题的学习和实践,可以帮助学生更好地掌握Python语言的基础知识和编程方法。 在Python语言的基础程序练习题,最基本的要求就是理解Python语言的基本语法和编程方法。这包括变量定义、数据类型、运算符、控制语句和函数等。此外,还需要了解Python语言的一些库和模块,例如math库、random库、sys库和os库等。 在练习题,我们需要编写一些简单的Python程序来解决特定问题。这可以包括编写程序来计算一些数学问题,比如计算圆的周长和面积、计算正弦函数值等等。我们还可以编写一些程序来处理字符串问题,比如字符串的拼接、截取和格式化输出等。 除了理论知识外,实践也是非常重要的。在练习,学生需要根据问题的要求,选择正确的编程语句和方法来编写一个可以正确运行的程序。学生还需要学会调试程序和解决遇到的错误和问题。 总的来说,基础程序练习题Python语言程序设计学习的一部分,它对于学生掌握Python语言的基础知识和编程技巧具有重要作用。通过练习和实践,学生可以更好地理解Python语言的编程方法和应用,在未来的学习和工作,也能更加游刃有余地应用Python语言进行编程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值