Python基础入门(3)—— 什么是函数递归、字典、集合、文件操作、异常处理?

Better late than never.
迟做总比不做好;晚来总比不来好。

在这里插入图片描述

01 | 🚘函数 && 递归

在Python中,函数(function)和递归(recursion)是两个非常重要的概念。函数是有一定功能的代码块,可以接受参数并返回结果。递归是一种解决问题的方法,通过自身调用来解决一个问题。

以下是关于Python函数与递归的详细讲解:

🚔函数

  1. 定义函数:在Python中定义函数使用def语句,语法如下:

    def function_name(parameters):
    	function_body
    	return [expression]
    

    其中function_name是函数的名称,parameters是函数的参数,在圆括号内列出,如果没有参数,则留空。函数体包含了要执行的代码,return关键字后面的表达式是返回值(可选),它是函数调用的结果。

  2. 调用函数:要调用函数,请输入函数的名称以及任何必需的参数,并以圆括号括起来。示例:

    def my_func(name):
    	print('Hello, ' + name)
    
    my_func('Tom')     # 输出'Hello, Tom'
    
  3. 参数传递:Python中的参数有两种(位置参数和关键字参数)。位置参数是按顺序传递给函数的,而关键字参数则是通过参数名指定。示例:

    def add_numbers(x, y):
    	return x + y
    
    result1 = add_numbers(2, 3)         # 位置参数
    result2 = add_numbers(y=3, x=2)     # 关键字参数
    
    print(result1)      # 输出5
    print(result2)      # 输出5
    
  4. 默认参数:可以在函数定义时为参数指定默认值,这样在调用函数时可以不传递该参数。示例:

    def greet(name='John'):
    	print('Hello, ' + name)
    
    greet()             # 输出'Hello, John'
    greet('Tom')        # 输出'Hello, Tom'
    
  5. 不定长参数:如果不知道将要传递多少个参数,可以在函数定义中使用*args**kwargs来接受不确定数量的位置参数和关键字参数。示例:

    def my_func(*args):
    	for arg in args:
    		print(arg)
    
    my_func(1, 2, 3, 4)     # 输出1 2 3 4
    
    def my_func(**kwargs):
    	for key, value in kwargs.items():
    		print(key + ': ' + str(value))
    
    my_func(name='Tom', age=30)     # 输出'name: Tom' 和 'age: 30'
    
  6. 匿名函数(Lambda):Python支持使用lambda表达式创建匿名函数,lambda语法如下:

    lambda arguments: expression
    

    其中arguments是参数列表,expression是函数体,它是由参数产生的返回值。示例:

    add_numbers = lambda x, y: x + y     # 创建一个lambda函		数'add_numbers'
    result = add_numbers(2, 3)           # 调用lambda函数
    print(result)                        # 输出5
    

🚔递归

递归是一种在函数中调用自身以解决问题的技术。在递归函数中,需要找到基本情况和递归规则,确保在每次递归时问题的规模都缩小了。

以下是一个通过递归计算阶乘的示例:

def factorial(n):
    if n == 1:              # 基本情况
        return 1
    else:
        return n * factorial(n-1)     # 递归规则

result = factorial(5)

print(result)           # 输出120

函数递归调用的图解可以看下图示例:

在这里插入图片描述

总之,在Python中函数和递归都是重要的编程概念,而且它们可以相互结合使用来解决各种问题。函数可以接受参数并返回值,有默认参数、不定长参数和匿名函数等特性。递归则是一种解决问题的方法,通过自身调用来解决一个问题

02 | 🚘字典

在Python中,字典(Dictionary)是一种无序、可变的数据类型,用于存储键值对。它们非常灵活,在许多编程场景中都可以派上用场。以下是关于Python字典的详细讲解:

  1. 创建字典

    要创建一个字典,请使用花括号{}并以逗号分隔键值对。示例:

    my_dict = {'name': 'Tom', 'age': 30, 'gender': 'male'}
    

    如果希望创建一个空字典,请使用空的花括号{}。示例:

    my_dict = {}
    
  2. 访问字典内的值

    可以使用方括号[]来访问字典中的特定值,也可以使用get()方法。如果访问一个不存在的键,则会引发KeyError异常。但是如果使用get()方法,则在找不到指定键时返回None,或设置的默认值(可选参数)。示例:

    my_dict = {'name': 'Tom', 'age': 30, 'gender': 'male'}
    
    print(my_dict['name'])     # 输出'Tom'
    print(my_dict.get('address'))   # 输出None
    print(my_dict.get('address', 'Beijing'))     # 输出'Beijing'
    
  3. 修改字典

    要更改字典中的值,请使用给定键的索引。示例:

    my_dict = {'name': 'Tom', 'age': 30, 'gender': 'male'}
    
    my_dict['age'] = 40
    
    print(my_dict)      # 输出{'name': 'Tom', 'age': 40, 'gender': 'male'}
    
  4. 添加和删除键值对

    要向字典中添加一个键值对,请使用给定键的索引。示例:

    my_dict = {'name': 'Tom', 'age': 30}
    
    my_dict['gender'] = 'male'
    
    print(my_dict)      # 输出{'name': 'Tom', 'age': 30, 'gender': 'male'}
    

    要从字典中删除一个键值对,请使用del语句或pop()方法。示例:

    my_dict = {'name': 'Tom', 'age': 30}
    
    del my_dict['age']
    
    print(my_dict)      # 输出{'name': 'Tom'}
    
    my_dict.pop('name')
    
    print(my_dict)      # 输出{}
    
  5. 字典长度和键值大小写转换

    要获取字典中的键数,请使用len()函数。要将字典中的所有键转换为小写或大写,请使用keys()和lower()或upper()方法。示例:

    my_dict = {'Name': 'Tom', 'Age': 30, 'Gender': 'male'}
    
    print(len(my_dict))       # 输出3
    
    lower_keys = [key.lower() for key in my_dict.keys()]
    
    print(lower_keys)         # 输出['name', 'age', 'gender']
    

    总之,在Python中,字典是一种非常有用的数据类型,可以存储键值对并提供快速且方便的访问。通过学习如何创建、访问、修改、添加和删除字典,并掌握一些基本的方法和技巧,能更好地应用它们来解决各种编程问题。

03 | 🚘集合

在Python中,集合(Set)是一种无序、可变的数据类型,用于存储唯一的元素。它们非常有用,可以帮助解决各种编程问题。以下是关于Python集合的详细讲解:

  1. 创建集合

    要创建一个集合,请使用花括号{}或set()函数,并以逗号分隔多个元素。示例:

    my_set = {1, 2, 3}
    
    my_set = set([1, 2, 3])
    

    如果希望创建一个空集合,请不要使用空的花括号{},因为这将创建一个空字典。相反,您应该使用set()函数。示例:

    my_set = set()
    
  2. 集合操作

    与其他数据类型一样,集合也支持各种操作。以下是几个重要的集合操作:

    1. 添加元素:可以使用add()方法向集合中添加元素,或使用update()方法向其添加另一个集合。示例:

      my_set = {1, 2, 3}
      
      my_set.add(4)
      
      print(my_set)    # 输出{1, 2, 3, 4}
      
      my_set.update({4, 5, 6})
      
      print(my_set)    # 输出{1, 2, 3, 4, 5, 6}
      
    2. 删除元素:可以使用remove()或discard()方法删除集合中的元素。remove()方法在需要删除的元素不存在时会引发KeyError异常,而discard()方法则不会。示例:

      my_set = {1, 2, 3}
      
      my_set.remove(2)
      
      print(my_set)    # 输出{1, 3}
      
      my_set.discard(4)
      
      print(my_set)    # 输出{1, 3}
      
    3. 集合运算:可以使用一些内置函数执行集合操作(如联合、交集和差异)。这些操作包括union()、intersection()和difference()。示例:

      set_a = {1, 2, 3}
      set_b = {3, 4, 5}
      
      set_c = set_a.union(set_b)
      
      print(set_c)     # 输出{1, 2, 3, 4, 5}
      
      set_d = set_a.intersection(set_b)
      
      print(set_d)     # 输出{3}
      
      set_e = set_a.difference(set_b)
      
      print(set_e)     # 输出{1, 2}
      
  3. 集合推导式

    与列表推导式类似,Python也具有集合推导式的概念。它允许将一行代码转换为集合中的多个元素。示例:

    my_set = {x**2 for x in range(10)}
    
    print(my_set)    # 输出{0, 1, 4, 9, 16, 25, 36, 49, 64, 81}
    

总之,在Python中,集合是一种非常有用的数据类型。通过学习如何创建、添加、删除和操作集合,并掌握一些基本的技巧,能更好地应用它们来解决各种编程问题。

04 | 🚘文件

在Python中,文件操作是一种非常常见的编程任务。它可以帮助读取、写入和操作文件数据。以下是关于Python文件操作的详细讲解:

  1. 打开文件

    要读取或写入文件,请首先打开它。在Python中,使用open()函数可以打开一个文件,该函数接受两个参数:文件名和打开模式。

    打开模式用于指定文件应如何打开。有几种不同的模式可用,包括:

    1. “r”:读取模式。默认值。如果文件不存在,则引发FileNotFoundError异常。

    2. “w”:写入模式。如果文件已存在,则其内容将被清除。如果文件不存在,则创建一个新文件。

    3. “a”:追加模式。将新内容添加到文件的末尾。如果文件不存在,则创建一个新文件。

    4. “x”:独占排他模式。创建文件,但如果文件已存在,则调用返回FileExistsError异常。

    示例:

    file = open("myfile.txt", "r")
    
  2. 读取文件

    要读取打开的文件,请使用read()或readline()方法读取文件内容。read()方法将读取整个文件,并将其作为字符串返回,而readline()方法将逐行读取文件,并返回每行作为一个字符串。示例:

    file = open("myfile.txt", "r")
    
    content = file.read()
    
    print(content)
    
    file.close()
    
  3. 写入文件

    要向文件中写入数据,请使用write()或writelines()方法。write()方法将作为参数传递的字符串写入文件,而writelines()方法将多个字符串写入文件。示例:

    file = open("myfile.txt", "w")
    
    file.write("This is my first line\n")
    file.write("This is my second line\n")
    
    file.close()
    
  4. 关闭文件

    完成对文件的读取或写入后,请务必关闭打开的文件。可以使用close()方法来关闭文件。示例:

    file = open("myfile.txt", "r")
    content = file.read()
    print(content)
    file.close()
    
  5. with语句

    Python中的with语句是一种很优美的写法,可以在代码块结束时自动关闭文件。不需要显式地调用close()方法。以下是使用with语句读取文件的示例:

    with open("myfile.txt", "r") as file:
    	content = file.read()
    	print(content)
    

总之,在Python中进行文件操作是一种非常常见的编程任务。通过学习如何打开、读取和写入文件,并了解不同的文件操作模式和用法,能更好地操作和处理文件数据。同时需要注意合理使用文件操作,避免资源浪费和不必要的安全风险。

05 | 🚘异常处理

在Python中,异常处理是一种重要的编程技术。它可以帮助捕获和处理发生在程序执行期间的错误,以避免程序崩溃或出现不可预知的行为。以下是关于Python异常处理的详细讲解:

  1. 什么是异常?

    在Python中,当代码发生错误时,将引发异常对象。异常包含有关错误的信息,例如错误类型和堆栈跟踪等。常见的异常包括ZeroDivisionError、NameError和TypeError等。示例:

    a = 10 / 0
    

    上面的代码将引发ZeroDivisionError异常,提示“division by zero”。

  2. 捕获异常

    要捕获异常,请使用try-except语句块。try块将包含可能引发异常的代码,而except块将包含异常处理代码。except块捕获特定类型的异常,并向用户提供有用的错误消息并采取适当的操作。示例:

    try:
    	a = 10 / 0
    except ZeroDivisionError as e:
    	print("Error: ", e)
    

    上述代码将捕获ZeroDivisionError异常,并输出错误信息“Error: division by zero”。

  3. 多个异常

    可以在同一个try块中处理多个异常。只需添加每个异常的一个except块即可。示例:

    try:
    	a = int(input("Enter a number: "))
    	b = int(input("Enter another number: "))
    	c = a / b
    except ZeroDivisionError as e:
    	print("Error: ", e)
    except ValueError as e:
    	print("Error: ", e)
    

    上面的代码将如果除数为零,输出“Error: division by zero”,如果输入的不是数字,输出“Error: invalid literal for int() with base 10”。

  4. finally块

    try-except语句还允许使用finally块,该块包含在完成代码块后始终运行的代码。即使异常未被捕获,finally块也会执行。示例:

    try:
    	f = open("myfile.txt", "r")
    	print(f.read())
    except FileNotFoundError as e:
    	print("Error: ", e)
    finally:
    	f.close()
    

    上述代码将打开一个文件并打印其内容。如果文件不存在,输出“Error: [Errno 2] No such file or directory"。无论文件的哪个部分出现问题,都会关闭文件。

  5. 自定义异常

    在Python中,您还可以通过创建子类来创建自定义异常。 自定义异常可用于检测特定的错误,并向用户提供更有针对性的错误消息。示例:

    class MyError(Exception):
    	def __init__(self, message):
        	self.message = message
    
    
    try:
    	raise MyError("A custom error occurred.")
    except MyError as e:
    	print(e.message)
    

    以上代码将抛出MyError异常,并输出“A custom error occurred.”。

总之,在Python中,异常处理是一种非常重要的编程技术。通过学习如何捕获和处理异常,以及了解不同类型的异常和自定义异常的用法,您将能够更好地编写健壮、可靠的程序。

06 | 🚘习题

利用字典创建3人(姓名和电话号码如下)的简易通讯录:

小赵123456789
小明123456788
小花123456787

要求输入姓名时能够以“姓名:电话”的形式反馈联系电话,当输入姓名有误时,系统提示“您的输入有误,请重新查询”。最后遍历字典,输出所有人的信息
输入样例:小明
输出样例:

小明:123456788
小赵 123456789)
小明 123456788)
小花 123456787)

以下是Python实现该简易通讯录的代码:

address_book = {
    '小赵': '123456789',
    '小明': '123456788',
    '小花': '123456787'
}

while True:
    name = input("请输入姓名:")
    if name in address_book:
        print(name + ":" + address_book[name])
    else:
        print("您的输入有误,请重新查询")

    flag = input("是否继续查询(Y/N):")
    if flag.upper() != 'Y':
        break

print("所有人的信息如下:")
for name, number in address_book.items():
    print(name, number)

在这里插入图片描述

评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ltd Pikashu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值