1、在Python中,使用global关键字来指定变量为全局变量

心得:

该关键字只能用于在函数外部定义的变量或者全局变量,无法用于在函数内部定义的变量,如果在函数内部需要使用全局变量,可以先在函数外部定义该变量,并且在函数内部使用global关键字来声明为全局变量,这样就可以在函数内部修改全局变量的值。

count = 0  # 全局变量
def add():global count  # 声明count为全局变量count += 1
add()  # 调用函数
print(count)  # 输出1

2、如果函数中没有return语句或者return语句不带任何返回值,那么该函数的返回值为None。

def say_hello():print("Hello World!")
result = say_hello()
print(result)

3、包含yield语句的函数可以用来创建生成器。

心得:
包含yield的函数被称为生成器函数,并且可以用于创建生成器对象,当函数执行到yield语句时,函数会暂停执行,并将yield右侧的值返回给调用者,作为生成器的下一个值,同时保存函数的当前状态,等待下一次调用时继续执行。

这种特性可以使生成器函数适合处理大量数据或者耗时的操作,因为它们不需要一次性地生成所有数据,而是可以按需生成。

4、调用带有默认值参数的函数时,不能为默认值参数传递任何值,必须使用函数定义时设置的默认值(判断对错)。错误

5、lambda表达式只能用来创建匿名函数,不能为这样的函数起名字(判断对错)。错误

6、运行5.3.1节倒数第2、3段的示例代码,查看结果并分析原因。

def demo(newitem,old_list=[]):old_list.append(newitem)return old_list
print(demo('5',[1,2,3,4]))
print(demo('aaa',['a','b']))print(demo('a'))
print(demo('b'))def demo(newitem,old_list=None):if old_list is None:old_list=[]new_list = old_list[:]new_list.append(newitem)return new_list
print(demo('5',[1,2,3,4]))
print(demo('aaa',['a','b']))
print(demo('a'))
print(demo('b'))

第一个参数newitem是要添加到列表中的新项,第二个参数old_list是一个列表,表示当前列表中的所有项。

函数的目的是将新项添加到列表中,并返回更新后的列表。

这个函数有两个版本,第一个版本会有一个问题,因为默认参数([])是可变的,这意味着如果多次调用带有相同默认参数的函数,则该参数会在多次调用之间保留其更改的状态。

这是因为在Python中,默认参数只会在函数定义时评估一次,并在所有函数调用之间共享。

因此,如果需要在多次调用之间共享状态,则应将默认参数设置为不可变类型(如None),然后在函数内部检查参数是否为None,如果是,则创建一个新的
列表。

第二个版本的代码通过这种方式解决了这个问题。

7、编写函数,判断一个整数是否为素数,并编写主程序调用该函数。

def is_prime(num):if num <= 1:return Falsefor i in range(2, int(num**0.5)+1):if num % i == 0:return Falsereturn True

8、编写函数,接收一个字符串,分别统计大写字母、小写字母、数字、其他字符的个数,并以元组的形式返回结果。

def count_chars(input_string):upper_count = 0lower_count = 0digit_count = 0other_count = 0for i in input_string:if i.isupper():upper_count += 1elif i.islower():lower_count += 1elif i.isdigit():digit_count += 1else:other_count += 1return (upper_count, lower_count, digit_count, other_count)

心得:
需要熟练掌握判断大写字母、小写字母、数字的方法

9、在Python程序中,局部变量会隐藏同名的全局变量吗?编写代码进行验证。

局部变量会隐藏同名的全局变量

x = "global"def test():x = "local"print("Inside function:", x)test()
print("Outside function:", x)

10、编写函数,可以接收任意多个整数并输出其中的最大值和所有整数之和。

def max_sum(*args):if not args:print("没有输入任何整数")returnmax_num = args[0]sum_num = 0for num in args:if num > max_num:max_num = numsum_num += numprint("最大值为:", max_num)print("所有整数之和为:", sum_num)

心得:
函数参数为可变参数*arge(可以接收任意多个整数或者不传入任何整数)

11、编写函数,模拟内置函数sum()。

def my_sum(iterable):result = 0for item in iterable:result += itemreturn result

心得:
接收一个可迭代对象作为参数


# count = 0  # 全局变量
#
# def add():
#     global count  # 声明count为全局变量
#     count += 1
#
#
# add()  # 调用函数
# print(count)  # 输出1# def say_hello():
#     print("Hello World!")
#
#
# result = say_hello()
# print(result)# 比如说使用生成器函数来生成斐波那契数列
#
# def fibonacci(n):
#     a, b = 1, 1
#     for i in range(n):
#         yield a
#         a, b = b, a + b
# # 创建生成器对象
# f = fibonacci(10)
# # 使用next()函数获取下一个值
# print(next(f))  # 输出0
# print(next(f))  # 输出1
# print(next(f))  # 输出1
# print(next(f))  # 输出2
# print(next(f))  # 输出3
#在上面的代码中,定义了一个名为fibonacci()的生成器函数,用于生成斐波那契数列。
# 在函数中,使用for循环生成数列中的每一项,并使用yield语句返回每一项的值。
# 然后,创建了一个生成器对象f,并使用next()函数获取了数列中的前5项。
# 每次调用next()函数时,函数会返回生成器的下一个值,直到没有更多的值可供返回,此时将引发StopIteration异常。# # 使用lambda表达式创建函数
# sum = lambda x, y: x + y
# # 调用函数
# print(sum(2, 3))  # 输出:5
# # 为函数取名
# sum.__name__ = "my_sum"
# # 重复使用函数
# print(sum(4, 5))  # 输出:9# def my_sum(iterable):
#     result = 0
#     for item in iterable:
#         result += item
#     return result
#
# def max_sum(*args):
#     if not args:
#         print("没有输入任何整数")
#         return
#     max_num = args[0]
#     sum_num = 0
#     for num in args:
#         if num > max_num:
#             max_num = num
#         sum_num += num
#     print("最大值为:", max_num)
#     print("所有整数之和为:", sum_num)# x = "global"
#
# def test():
#     x = "local"
#     print("Inside function:", x)
#
#
# test()
# print("Outside function:", x)#
# def count_chars(input_string):
#
#     upper_count = 0
#     lower_count = 0
#     digit_count = 0
#     other_count = 0
#
#     for i in input_string:
#         if i.isupper():
#             upper_count += 1
#         elif i.islower():
#             lower_count += 1
#         elif i.isdigit():
#             digit_count += 1
#         else:
#             other_count += 1
#
#     return (upper_count, lower_count, digit_count, other_count)#
# def is_prime(num):
#     if num <= 1:
#         return False
#     for i in range(2, int(num**0.5)+1):
#         if num % i == 0:
#             return False
#     return True# def demo(newitem,old_list=[]):
#     old_list.append(newitem)
#     return old_list
#
#
# print(demo('5',[1,2,3,4]))
# print(demo('aaa',['a','b']))
#
# print(demo('a'))
#
# print(demo('b'))def demo(newitem,old_list=None):if old_list is None:old_list=[]new_list = old_list[:]new_list.append(newitem)return new_listprint(demo('5',[1,2,3,4]))
print(demo('aaa',['a','b']))print(demo('a'))
print(demo('b'))
#
# 函数的默认值参数只在定义的时候被处理一次
#
# 第一个参数newitem是要添加到列表中的新项,第二个参数old_list是一个列表,表示当前列表中的所有项。
# 函数的目的是将新项添加到列表中,并返回更新后的列表。
# 这个函数有两个版本,第一个版本会有一个问题,因为默认参数([])是可变的,这意味着如果多次调用带有相同默认参数的函数,则该参数会在多次调用之间保留其更改的状态。
# 这是因为在Python中,默认参数只会在函数定义时评估一次,并在所有函数调用之间共享。
# 因此,如果需要在多次调用之间共享状态,则应将默认参数设置为不可变类型(如None),然后在函数内部检查参数是否为None,如果是,则创建一个新的列表。
# 第二个版本的代码通过这种方式解决了这个问题。

python-课后作业-4相关推荐

  1. python课后作业总结

    课后作业1. 一个列表中有多种字符型的元素,要求一将非字符型的全部改成字符型,要求二将所有字符型中的大写字母改成小写. 需要用到的知识有: 1.lower()函数,功能:将大写字母改成小写 2.列表生 ...

  2. 慕课python课后作业_python基础1习题练习

    python基础1习题练习: #encoding:utf-8 #1.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败! name=input('na ...

  3. 小甲鱼python课后作业十七_小甲鱼Python第十六讲课后习题--017函数

    DRY是指Don't Repeat Yourself ,特指在程序设计以及计算中避免重复代码,因为这样会降低灵活性.简洁性,并且可能导致代码之间的矛盾. 即不要写重复的代码,而是用"abst ...

  4. 鱼c论坛python课后作业_三日速成python?打工人,小心钱包,别当韭菜

    随着人工智能的热度越来越高,许多非计算机专业的同学们也都纷纷投入到学习编程的道路上来.而Python,作为一种相对比较容易上手的语言,也越来越受欢迎.网络上各类网课层出不穷,各式广告令人眼花缭乱.某些 ...

  5. 小甲鱼python课后作业十三

    了不起的分支和循环(I) 1. Python 同一个代码块中的所有语句必须遵循什么原则?   遵循同一缩进的原则.Python 是通过缩进来检测代码块的,向右缩进相同距离的所有语句,都同属于一个代码块 ...

  6. 老男孩python课后作业_老男孩python基础知识练习题(一)中

    20.字符串是否可迭代?如可以请使用for循环每一个元素? >>> name = " aleX " >>> for i in name: ... ...

  7. python 课后作业_python 学习笔记 五 课后作业

    # # 1.有如下变量(tu是个元组),请实现要求的功能 # tu = ('alex',[11,22,{'k1':'v1','k2':['age','name'],'k3':(11,22,33)},4 ...

  8. python 课后作业_python 学习笔记 三 课后作业

    # 1.有变量name = "aleX leNb"完成如下操作: # 1,移除name变量对应的值两边的空格,并输出处理结果 """ name = ' ...

  9. Python课后作业 2. 分治法找假币 ----(第八次作业)

    文章目录 前引闲聊 原题题目 代码实现(分治法 真的麻了) 代码实现(一次遍历) 提交结果 前引闲聊 我说实话 这道题真的好无聊好无聊好无聊 我就这样说嘛 这道题有好蠢 我们只需要一次遍历 就是如果数 ...

  10. Python课后作业 2. 旋转魔方阵(文件) ---- (第七次作业)

    文章目录 我的思路 原题题目 代码实现 提交结果 我的思路 刚刚想着把作业题和考试题赶快赶了 就去忙其他的了 忽然看到这道作业题 我确实觉得很有意思 魔方阵 我思考了两分钟确实没想到用什么公式可以套出 ...

最新文章

  1. 使用 PHP 构建的 Web 应用如何避免 XSS 攻击
  2. Asp.net团队疯了(同时发布WebMatrix, Razor, MVC3和Orchard)
  3. 抓rtmp推流地址_如何实现摄像机竖屏直播推流?
  4. Service的生命周期
  5. 【转】使用ant来调用Jmeter,并定制运行时参数
  6. 中国电子云发布专属云CECSTACK 以全栈信创赋能千行百业
  7. 使用爬虫刷blog访问量 随机代理IP 随机user_agent
  8. vmware上的ubuntu与window共享folder(shared folder disabled.)
  9. SpringBoot 定义通过字段验证
  10. django基础知识总结
  11. Centos7 下配置Samba服务器---犯二的经历
  12. bootstrap柱状图
  13. python educoder苹果梨子_pythoneducoder苹果梨子煮水的功效_苹果梨子汤的功效
  14. 顺序表、链表的 “ 相爱相杀 ”(多方位比较)
  15. 十大著名的网络黑客事件
  16. 29-高级路由:BGP清除
  17. 如何使用ArcMap连接PostGresql(包含PostGresql和PostGis以及所需要的安装文件的下载链接)
  18. ROS开发实践-QT工具箱
  19. Microsoft的CL编译器与GCC到底有什么区别?
  20. 从冷备到多活,阿里毕玄谈数据中心的异地容灾

热门文章

  1. java每日一练——第四天:输入两个整数num1和num2,请你设计一个程序,计算并输出它们的和、差、积、整数商及余数。
  2. 【四】Spring源码分析之启动主流程---AbstractApplicationContext的refresh方法
  3. 湖北省制造业高质量发展专项资金政策!2022年各大类申报条件以及奖励补贴标准汇总
  4. 做为站长眼光要放在远方
  5. NVIDIA Jetson TX2 解决奥比中光 Astra pro相机的ros 打不开深度信息/camera/depth/image
  6. 数据结构__树的学习及宠物店功能实现
  7. excel报表管理系统mysql_教育扶贫数据库管理系统下载安装|教育扶贫数据库管理系统(mysql收集excel表格)官方版下载_v1.0_9号软件下载...
  8. vim中显示和关闭行号
  9. 计算机算法对程序设计的作用,【程序设计论文】高中算法与程序设计教学意义及有效性(共3796字)...
  10. 苹果花了 5000 万美元找特斯拉买电池,它想做什么?