Python从入门到精通_第2课_关键字与循环控制_笔记

分手后的思念是犯贱 2021-11-17 23:16 382阅读 0赞

文章目录

  • 变量和类型
    • 基本变量类型
    • 变量定义
    • 变量赋值
  • 常见字符串处理
  • 条件判断
  • 循环控制
  • 函数

GitHub: https://github.com/RealEmperor/Basic-Introductory-Python-Course

变量和类型

基本变量类型

整数 int

浮点数 float

字符串 str

布尔值 bool

空值 NoneType

函数 function

模块 module

变量定义

变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。
基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。
变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。(弱类型)

变量赋值

每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。(重要!!!)
等号(=)用来给变量赋值,等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。

  1. # 基本类型
  2. print(type(None))
  3. print(type(True))
  4. print(type(12345))
  5. print(type(123.45))
  6. print(type(1234.))
  7. print(type('abc'))
  8. <class 'NoneType'>
  9. <class 'bool'>
  10. <class 'int'>
  11. <class 'float'>
  12. <class 'float'>
  13. <class 'str'>
  14. # 容器类型
  15. print(type([1, 2, 3, 'a', 'bc']))
  16. print(type((1, 2, 3, 'abc')))
  17. values = ['abc', 1, 2, 3.]
  18. print(type(values[3]))
  19. print(type(set(['a', 1, 2.])))
  20. print(type({
  21. 'a': 123, 4: 'bcd', 5: 'efg'}))
  22. <class 'list'>
  23. <class 'tuple'>
  24. <class 'float'>
  25. <class 'set'>
  26. <class 'dict'>
  27. # 函数
  28. def func():
  29. print(100)
  30. print(type(func))
  31. <class 'function'>
  32. # 模块
  33. import string
  34. print(type(string))
  35. <class 'module'>
  36. # 自定义类型与类型实例
  37. class Cls:
  38. pass
  39. print(type(Cls))
  40. cls = Cls()
  41. print(type(cls))
  42. <class 'type'>
  43. <class '__main__.Cls'>
  44. # 变量赋值
  45. try:
  46. print(x) # 变量必须先赋值再使用
  47. except NameError:
  48. print("NameError: name 'x' is not defined")
  49. x = 100
  50. x = 'abcd' # x的类型不受限制
  51. NameError: name 'x' is not defined

常见字符串处理

去除空格及特殊符号:strip, lstrip, rstrip

复制字符串:str1 = str2

连接字符串

str2 += str1

new_str = str2 + str1

查找字符串:pos = str1.index(str2)

比较字符串:cmp(str1, str2)

字符串长度:len(str)

大小写转换

u_str = str.upper()

l_str = str.lower()

首字母大写:str.capitalize(); string.capword(str)

分割与合并字符串:split, splitlines, join

类型转换:int, float转换

格式化字符串

字符串测试

str.startwith(prefix)

str.endwith(suffix)

str.isalnum() # 是否全是字母和数字,并至少有一个字符。

str.isalpha() # 是否全是字母,并至少有一个字符。

str.isdigit() # 是否全是数字,并至少有一个字符。

str.isspace() # 是否全是空白字符,并至少有一个字符。

str.islower() # 字母是否全是小写

str.isupper() # 字母是否全是大写

str.istitle() # 首字母是否大写

  1. # strip去除空格
  2. s = ' abcd efg '
  3. print(s.strip())
  4. print(s.lstrip())
  5. print(s.rstrip())
  6. print(s)
  7. abcd efg
  8. abcd efg
  9. abcd efg
  10. abcd efg
  11. # 字符串连接
  12. print('abc_' + 'defg')
  13. s = 'abcdefg'
  14. s += '\nhijk'
  15. print(str)
  16. abc_defg
  17. <class 'str'>
  18. # 大写小
  19. s = 'abc defg'
  20. print(s.upper())
  21. print(s.upper().lower())
  22. print(s.capitalize())
  23. ABC DEFG
  24. abc defg
  25. Abc defg
  26. # 位置和比较
  27. s_1 = 'abcdefg'
  28. s_2 = 'abdefgh'
  29. print(s_1.index('bcd'))
  30. try:
  31. print(s_1.index('bce'))
  32. except ValueError:
  33. print('ValueError: substring not found')
  34. print(s_1 == s_1) # cmp函数被Python3移除了
  35. print(s_1 > s_2)
  36. print(s_2 > s_1)
  37. 1
  38. ValueError: substring not found
  39. True
  40. False
  41. True
  42. # 分割和连接
  43. s = 'abc,def,ghi'
  44. print(s.split(','))
  45. s = '123\n456\n789'
  46. numbers = s.splitlines()
  47. print(numbers)
  48. print('-'.join(numbers))
  49. ['abc', 'def', 'ghi']
  50. ['123', '456', '789']
  51. 123-456-789
  52. # 常用判断
  53. s = 'abcdefg'
  54. print(s.startswith('abc'))
  55. print(s.endswith('efg'))
  56. print('abcd1234'.isalnum())
  57. print('\tabcd1234'.isalnum())
  58. print('abcd'.isalpha())
  59. print('12345'.isdigit())
  60. print(' '.isspace())
  61. print('acb125'.islower())
  62. print('A1B2C'.isupper())
  63. print('Hello world!'.istitle())
  64. True
  65. True
  66. True
  67. False
  68. True
  69. True
  70. True
  71. True
  72. True
  73. False
  74. # 数字到字符串
  75. print(str(5))
  76. print(str(5.))
  77. print(str(-5.23))
  78. print(int('1234'))
  79. print(float('-23.456'))
  80. 5
  81. 5.0
  82. -5.23
  83. 1234
  84. -23.456
  85. # 格式化字符串
  86. print('Hello %s!' % 'world')
  87. print('%d-%.2f-%s' % (4, -2.3, 'hello'))
  88. Hello world!
  89. 4--2.30-hello

条件判断

真值判断

if x == True:

if x:

if not x:

空值判断

if x is None:

if not x:

比较

if a == b:

if a > b:

  1. # if判断
  2. a = 100
  3. b = 200
  4. c = 300
  5. if c == a:
  6. print(a)
  7. elif c == b:
  8. print(b)
  9. else:
  10. print(c)
  11. 300
  12. # None的判断
  13. x = None
  14. if x is None:
  15. print('x is None')
  16. if not x:
  17. print('x is None')
  18. x is None
  19. x is None

循环控制

for循环

for i in range(begin, end, steps): <=> for (i = begin; i < end; i += steps)

while循环

while 条件判断:

循环嵌套

循环控制

break

continue

pass

  1. # for循环
  2. s = 0
  3. for i in range(0, 101):
  4. s += i
  5. print(s)
  6. 5050
  7. # while循环
  8. s = 0
  9. i = 0
  10. while i <= 100:
  11. s += i
  12. i += 1
  13. print(s)
  14. 5050
  15. # continue/pass/break
  16. for i in range(0, 100):
  17. if i < 10:
  18. pass
  19. elif i < 30:
  20. continue
  21. elif i < 35:
  22. print(i)
  23. else:
  24. break
  25. 30
  26. 31
  27. 32
  28. 33
  29. 34

函数

函数定义格式

默认参数

可变参数:*args,自动组装成tuple

关键字参数:*args,自动组装成dict

命名关键字参数

函数调用

函数名(参数名)

模块名.函数名(参数名)

带参数名调用

什么是递归?

  1. # 函数定义和默认参数
  2. def func(x, y=500):
  3. print(x, y)
  4. func(150)
  5. func(100, 200)
  6. func(y=300, x=100)
  7. 150 500
  8. 100 200
  9. 100 300
  10. # 可变参数
  11. def func(name, *numbers):
  12. print(name)
  13. print(numbers)
  14. func('Tom', 1, 2, 3, 4)
  15. Tom
  16. (1, 2, 3, 4)
  17. # 关键字参数
  18. def func(name, **kvs):
  19. print(name)
  20. print(kvs)
  21. func('Jack', china='Beijing', uk='London')
  22. Jack
  23. {'china': 'Beijing', 'uk': 'London'}
  24. # 命名关键字参数
  25. def func(*, china, uk): # *用于和普通参数做分割,*args一样效果
  26. print(china, uk)
  27. func(china='Beijing', uk='London') # 必须传入参数名
  28. Beijing London
  29. # 复杂情况
  30. def func(a, b, c=0, *args, **kvs):
  31. print(a, b, c, args, kvs)
  32. func(1, 2)
  33. func(1, 2, 3)
  34. func(1, 2, 3, 'a', 'b')
  35. func(1, 2, 3, 'a', 'b', china='Beijing', uk='London')
  36. func(1, 2, 3, *('a', 'b'), **{
  37. 'china': 'Beijing', 'uk': 'London'})
  38. 1 2 0 () {}
  39. 1 2 3 () {}
  40. 1 2 3 ('a', 'b') {}
  41. 1 2 3 ('a', 'b') {'china': 'Beijing', 'uk': 'London'}
  42. 1 2 3 ('a', 'b') {'china': 'Beijing', 'uk': 'London'}
  43. # 递归的经典例子!
  44. # 斐波那契数列
  45. def fib(n):
  46. if n < 1:
  47. raise ValueError
  48. elif (n == 1) or (n == 2):
  49. return 1
  50. else:
  51. return fib(n - 1) + fib(n - 2)
  52. print(fib(1))
  53. print(fib(2))
  54. print(fib(3))
  55. print(fib(4))
  56. print(fib(5))
  57. print(fib(6))
  58. 1
  59. 1
  60. 2
  61. 3
  62. 5
  63. 8
  64. # 汉诺塔
  65. def move(n, source, target, helper):
  66. if n == 1:
  67. print(source + ' -> ' + target)
  68. else:
  69. move(n - 1, source, helper, target)
  70. print(source + ' -> ' + target)
  71. move(n - 1, helper, target, source)
  72. move(4, 'A', 'B', 'C')
  73. A -> C
  74. A -> B
  75. C -> B
  76. A -> C
  77. B -> A
  78. B -> C
  79. A -> C
  80. A -> B
  81. C -> B
  82. C -> A
  83. B -> A
  84. C -> B
  85. A -> C
  86. A -> B
  87. C -> B

参考资料:七月在线课程

发表评论

表情:
评论列表 (有 0 条评论,382人围观)

还没有评论,来说两句吧...

相关阅读