IT评测·应用市场-qidao123.com技术社区

标题: 【笔记1】Python编程:从入门到实践(第2版) - 埃里克·马瑟斯 [打印本页]

作者: 美食家大橙子    时间: 2024-6-15 02:24
标题: 【笔记1】Python编程:从入门到实践(第2版) - 埃里克·马瑟斯
第一部分 基础知识

第1章 安装Python
第2章 变量中存储信息

  1. name = "ada lovelace"
  2. name.title() # 首字母大写的方式显示每个单词
  3.                                                 # Ada Lovelace
  4. print(name.upper()) # 全部大写 ADA LOVELACE
  5. print(name.lower()) # 全部小写 ada lovelace
  6. # 在字符串中插入变量的值,前引号前加上字母f
  7. # f字符串是Python 3.6引入的**
  8. first_name = "ada"
  9. last_name = "lovelace"
  10. full_name = f"{first_name} {last_name}"
  11. print(full_name)
  12. # ada lovelace
  13. # Python 3.5或更早的版本,需要使用format()方法
  14. full_name = "{} {}".format(first_name, last_name)
  15. print("\tPython") # 制表符\t
  16. # Python
  17. print("Languages:\nPython\nC") # 换行符\n
  18. # Languages:
  19. # Python
  20. # C
  21. favorite_language = ' python '
  22. ❷ >>> favorite_language.rstrip() # 删除末尾空白
  23. ' python'
  24. ❸ >>> favorite_language.lstrip() # 删除开头空白
  25. 'python '
  26. ❹ >>> favorite_language.strip() # 删除两边空白
  27. 'python'
复制代码
  数
  1. >>> 2 + 3
  2. 5
  3. >>> 3 - 2
  4. 1
  5. >>> 2 * 3
  6. 6
  7. >>> 3 / 2
  8. 1.5
  9. # ========================
  10. >>> 3 ** 2
  11. 9
  12. >>> 3 ** 3
  13. 27
  14. # ========================
  15. >>> 2 + 3*4
  16. 14
  17. >>> (2 + 3) * 4    # 使用圆括号来修改运算次序,
  18. 20
  19. # ========================
  20. >>> 0.2 + 0.1      # 结果包含的小数位数可能是不确定
  21. 0.30000000000000004
  22. # ========================
  23. >>> 4/2            # 任意两个数相除时,结果总是浮点数,
  24. 2.0
  25. # ========================下述,只有Python 3.6和更高的版本支持。
  26. # 书写很大的数时,可使用下划线将其中的数字分组,使其更清晰易读:
  27. >>> universe_age = 14_000_000_000
  28. >>> print(universe_age)  # 打印这种使用下划线定义的数时,Python不会打印其中的下划线:
  29. 14000000000
  30. # 这是因为存储这种数时,Python会忽略其中的下划线。
  31. # 在Python看来,1000与1_000没什么不同,1_000与10_00也没什么不同。
  32. # ========================
  33. >>> x, y, z = 0, 0, 0   # 同时给多个变量赋值
  34. # ========================
  35. # Python程序员会使用全大写来指出应将某个变量视为常量,其值应始终不变:
  36. MAX_CONNECTIONS = 5000
复制代码
第3章和第4章 列表、元组

在Python中,用方括号 [ ] 表现列表,并用逗号分隔其中的元素。
索引从0开始
Python通过将索引指定为-1,可让Python返回最后一个列表元素
  1. bicycles = ['trek', 'cannondale', 'redline', 'specialized']
  2. print(bicycles)
  3. # ['trek', 'cannondale', 'redline', 'specialized']
  4. ❶ print(bicycles[0]) # 访问列表元素
  5. # trek
  6. print(bicycles[-1])
  7. # specialized
  8. # ========================【1】修改列表元素
  9. ❶ motorcycles = ['honda', 'yamaha', 'suzuki'] # 例子1
  10. print(motorcycles)
  11. # ['honda', 'yamaha', 'suzuki']
  12. ❷ motorcycles[0] = 'ducati' # 【1】修改列表元素
  13. print(motorcycles)
  14. # ['ducati', 'yamaha', 'suzuki']
  15. # ========================【2】列表中添加元素
  16. motorcycles = ['honda', 'yamaha', 'suzuki'] # 例子2
  17. print(motorcycles)
  18. # ['honda', 'yamaha', 'suzuki']
  19. ❶ motorcycles.append('ducati') # 【2.1】列表末尾添加元素
  20. print(motorcycles)
  21. # ['honda', 'yamaha', 'suzuki', 'ducati']
  22. # ========================
  23. motorcycles = ['honda', 'yamaha', 'suzuki']# 例子3
  24. ❶ motorcycles.insert(0, 'ducati') #【2.2】列表中插入元素 insert()
  25. print(motorcycles)
  26. # ['ducati', 'honda', 'yamaha', 'suzuki']
  27. # ========================【3】列表中删除元素
  28. motorcycles = ['honda', 'yamaha', 'suzuki']# 例子4
  29. print(motorcycles)
  30. # ['honda', 'yamaha', 'suzuki']
  31. ❶ del motorcycles[0] # 【3.1】列表中删除(指定元素)用 del
  32. print(motorcycles)
  33. # ['yamaha', 'suzuki']
  34. # ========================
  35. motorcycles.pop() # 删除列表末尾的元素 pop()
  36. motorcycles.pop(0) # 指定要删除元素的索引
  37. motorcycles.remove('ducati')  # 根据值删除元素
  38. # ========================# ========================
  39. cars.sort() # 对列表进行排序(正序)
  40. cars.sort(reverse=True) # 列表按与字母顺序(反序)
  41. sorted(cars) # 按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。
  42. cars.reverse() # 倒着打印列表
  43. len(cars) # 确定列表的长度
  44. # ========================# ========================
  45. ❶ magicians = ['alice', 'david', 'carolina']
  46. ❷ for magician in magicians: # 遍历整个列表
  47. ❸ print(magician)
  48. # ========================# ========================
  49. for value in range(1, 5):
  50. print(value)
  51. # 1
  52. # 2
  53. # 3
  54. # 4
  55. numbers = list(range(1, 6)) # 使用range()创建数字列表
  56. print(numbers)
  57. # [1, 2, 3, 4, 5]
复制代码
range(2, 11, 2)
从2开始数,然后不断加2,直到到达或凌驾终值(11)
[2, 4, 6, 8, 10]
  1. >>> digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
  2. >>> min(digits) # 最大值
  3. 0
  4. >>> max(digits) # 最小值
  5. 9
  6. >>> sum(digits)  # 总和
  7. 45
复制代码
输出名单上的最后三名队员,可使用切片players[-3:]
元组

创建一系列不可修改的元素,元组可以满足这种需求。
Python将不能修改的值称为不可变的,而不可变的列表被称为元组。
但使用( ),而非 [ ] 来标识。
第5章 使用if语句。

  1. cars = ['audi', 'bmw', 'subaru', 'toyota']
  2. for car in cars:
  3.         ❶ if car == 'bmw':
  4.                 print(car.upper())
  5.         else:
  6.                 print(car.title())
  7. ❷ >>> car == 'bmw'
  8. True
复制代码
查抄多个条件

  1. ❷ >>> age_0 >= 21 and age_1 >= 21
  2. False
  3. ❷ >>> age_0 >= 21 or age_1 >= 21
  4. True
复制代码
查抄特定值是否包含在列表中

  1. ❶ >>> 'mushrooms' in requested_toppings
  2. True
  3. ❶ if user not in banned_users:
  4.         print(f"{user.title()}, you can post a response if you wish.")
复制代码
if

if-else语句
  1. if age >= 18:
  2.         print("You are old enough to vote!")
  3.         print("Have you registered to vote yet?")
  4. else:
  5.         print("Sorry, you are too young to vote.")
  6.         print("Please register to vote as soon as you turn 18!")
复制代码
if-elif-else结构
  1. if age < 4:
  2.         print("Your admission cost is $0.")
  3. elif age < 18:
  4.         print("Your admission cost is $25.")
  5. .............
  6. else:
  7.         print("Your admission cost is $40.")
复制代码
if-elif结构
   else是一条包罗万象的语句,只要不满足任何if或elif中的条件测试,其中的代码就会执行。
这大概引入无效甚至恶意的数据。
如果知道最终要测试的条件,应考虑使用一个elif代码块来代替else代码块。
  第6章 字典

  1. alien_0 = {'color': 'green', 'points': 5} # 字典
  2. print(alien_0['color']) # 访问字典中的值
  3. print(alien_0['points'])
  4. ❶ alien_0['x_position'] = 0 # 添加键值对/修改字典中的值
  5. alien_0 = {} # 创建一个空字典
  6. ❶ del alien_0['points'] # 删除键值对
  7. # 使用 get() 来访问值
  8. '''第一个参数用于指定键,是必不可少的;
  9. 第二个参数为指定的键不存在时要返回的值,'''
  10. point_value = alien_0.get('points', 'No point value assigned.')
  11. print(point_value)
  12. # 遍历所有键值对
  13. user_0 = {
  14.         'username': 'efermi',
  15.         'first': 'enrico',
  16.         'last': 'fermi',
  17. }
  18. for key, value in user_0.items():
  19.         print(f"\nKey: {key}")
  20.         print(f"Value: {value}")
  21. for name, language in favorite_languages.items():
  22.         print(f"{name.title()}'s favorite language is {language.title()}.")
  23. for name in favorite_languages.keys(): # 遍历字典中的所有键
  24.         print(name.title())
  25. for language in favorite_languages.values(): # 遍历字典中的所有值
  26.         print(language.title())
  27. pizza = {
  28.         'crust': 'thick',
  29.         'toppings': ['mushrooms', 'extra cheese'], # 在字典中存储列表
  30. }
  31. users = {
  32.         'aeinstein': {                             # 在字典中存储字典
  33.                 'first': 'albert',
  34.                 'last': 'einstein',
  35.                 'location': 'princeton',
  36.         },
  37.         'mcurie': {
  38.                 'first': 'marie',
  39.                 'last': 'curie',
  40.                 'location': 'paris',
  41.         },
  42. }
复制代码
第7章 获取输入、while循环

  1. name = input("Please enter your name: ")
  2. print(f"\nHello, {name}!")
  3. height = input("How tall are you, in inches? ")
  4. height = int(height)
复制代码
求模运算符 %

  1. >>> 4 % 3
  2. 1
  3. >>> 5 % 3
  4. 2
  5. >>> 6 % 3
  6. 0
  7. >>> 7 % 3
  8. 1
复制代码
while循环

使用break退出循环
使用continue…
  1. current_number = 1
  2. while current_number <= 5:
  3.         print(current_number)
  4.         current_number += 1
  5. while True:
  6.         city = input(prompt)
  7.         if city == 'quit':
  8.                 break
  9.         else:
  10.                 print(f"I'd love to go to {city.title()}!")
复制代码
第8章 函数

  1. def greet_user(username):
  2.         """显示简单的问候语。"""
  3.         print(f"Hello, {username.title()}!")
  4.        
  5. greet_user('jesse')
  6. def get_formatted_name(first_name, last_name):
  7.         """返回整洁的姓名。"""
  8.         full_name = f"{first_name} {last_name}"
  9.         return full_name.title()  #返回
复制代码
传递恣意数量的实参

形参名*toppings中的星号让Python创建一个名为toppings的空元组,并将收到的全部值都封装到这个元组中。函数体内的函数调用print()通过生成输出,证明Python可以或许处理使用一个值来调用函数的情形,也能处理使用三个值来调用函数的情形。它以雷同的方式处理不同的调用。
留意,Python将实参封装到一个元组中,即便函数只收到一个值:
  1. def make_pizza(*toppings):
  2.         """打印顾客点的所有配料。"""
  3.         print(toppings)
  4.        
  5. make_pizza('pepperoni')
  6. make_pizza('mushrooms', 'green peppers', 'extra cheese')
  7. # ('pepperoni',)
  8. # ('mushrooms', 'green peppers', 'extra cheese')
复制代码
使用恣意数量的关键字实参

形参**user_info中的两个星号让Python创建一个名为user_info的空字典,并将收到的全部名称值对都放到这个字典中。
在这个函数中,可以像访问其他字典那样访问user_info中的名称值对。
  1. def build_profile(first, last, **user_info):
  2.         """创建一个字典,其中包含我们知道的有关用户的一切。"""
  3.         user_info['first_name'] = first
  4.         user_info['last_name'] = last
  5.         return user_info
  6.        
  7. user_profile = build_profile('albert', 'einstein',
  8.                                                           location='princeton',
  9.                                                           field='physics')
  10. print(user_profile)
复制代码
导入整个模块

  1. # pizza.py
  2. def make_pizza(size, *toppings):
  3.         """概述要制作的比萨。"""
  4.         print(f"\nMaking a {size}-inch pizza with the following toppings:")
  5.         for topping in toppings:
  6.                 print(f"- {topping}")
  7.                
  8. # making_pizzas.py
  9. import pizza
  10. pizza.make_pizza(16, 'pepperoni')
复制代码
导入特定的函数

使用 as 给函数指定别名
  1. from module_name import function_name
  2. from module_name import function_name as mp # 使用 as 给函数指定别名
  3. from pizza import * # 导入模块中的所有函数
复制代码
第9章 类

init() 是一个特殊方法,每当你根据Dog类创建新实例时,Python
都会自动运行它。
包含三个形参:self、name和age。
形参self必不可少,而且必须位于其他形参的前面。
  1. class Dog:
  2.         """一次模拟小狗的简单尝试。"""
  3.        
  4.         def __init__(self, name, age):
  5.                 """初始化属性name和age。"""
  6.                 self.name = name
  7.                 self.age = age
  8.                
  9.         def sit(self):
  10.                 """模拟小狗收到命令时蹲下。"""
  11.                 print(f"{self.name} is now sitting.")
  12.                
  13.         def roll_over(self):
  14.                 """模拟小狗收到命令时打滚。"""
  15.                 print(f"{self.name} rolled over!")
  16. # 根据类创建实例
  17. my_dog = Dog('Willie', 6)
  18. my_dog.name #访问属性
  19. my_dog.sit() #调用方法
复制代码
继承

  1. class Car:
  2.         """一次模拟汽车的简单尝试。"""
  3.         def __init__(self, make, model, year):
  4.                 self.make = make
  5.                 self.model = model
  6.                 self.year = year
  7.                 self.odometer_reading = 0
  8.         def get_descriptive_name(self):
  9.                 long_name = f"{self.year} {self.make} {self.model}"
  10.                 return long_name.title()
  11.         def read_odometer(self):
  12.                 print(f"This car has {self.odometer_reading} miles on it.")
  13.         def update_odometer(self, mileage):
  14.                 if mileage >= self.odometer_reading:
  15.                         self.odometer_reading = mileage
  16.                 else:
  17.                         print("You can't roll back an odometer!")
  18.         def increment_odometer(self, miles):
  19.                 self.odometer_reading += miles
  20.                
  21. class ElectricCar(Car):
  22.         """电动汽车的独特之处。"""
  23.         def __init__(self, make, model, year):
  24.                 """初始化父类的属性。"""
  25.                 super().__init__(make, model, year) # super() 让能够调用父类的方法。
  26.                 my_tesla = ElectricCar('tesla', 'model s', 2019)
  27.                 print(my_tesla.get_descriptive_name())
复制代码
  1. >>> from random import randint
  2. >>> randint(1, 6) # 生成一个位于1和6之间的随机整数
  3. 3
复制代码
第10章 文件、如何处理错误(Python非常)

读取整个文件

  1. with open('pi_digits.txt') as file_object:
  2.         contents = file_object.read()
  3.        
  4. print(contents)
复制代码
文件路径

Windows体系使用反斜杠(\)
  1. with open('text_files/filename.txt') as file_object:
复制代码
逐行读取

  1. filename = 'pi_digits.txt'
  2. with open(filename) as file_object:
  3.         for line in file_object:
  4.                 print(line)
  5. 3.1415926535
  6. 8979323846
  7. 2643383279
复制代码
要消除这些多余的空缺行,可在函数调用print()中使用rstrip()
  1. filename = 'pi_digits.txt'
  2. with open(filename) as file_object:
  3.         for line in file_object:
  4.                 print(line.rstrip())
  5. 3.1415926535
  6. 8979323846
  7. 2643383279
复制代码
使用文件的内容

  1. filename = 'pi_digits.txt'
  2. with open(filename) as file_object:
  3.         lines = file_object.readlines()
  4. pi_string = ''
  5. for line in lines:
  6.         pi_string += line.rstrip()
  7.        
  8. print(pi_string)
  9. print(len(pi_string))
复制代码
第11章 测试


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4