3.1 几个概念

表达式

  • 表达式: 是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合
  • 表达式特点
    • 表达式一般仅仅用于计算一些结果,不会对程序产生实质性的影响
    • 如果在交互模式中输入一个表达式,解释器会自动将表达式的结果输出
  • 例如:

    算术表达式

    12 + 13

    逻辑表达式

    15 > 12

    算术和逻辑组合的复杂表示

    4 / 7 > 2

语句

  • 一个语法上自成体系的单位,它由一个词或句法上有关连的一组词构成
  • 语句的执行一般会对程序产生一定的影响,在交互模式中不一定会输出语句的执行结果
  • 例如

    1. print(123) # print
    2. a = input('please input:') # read input
    3. i = 5
    4. if i < 6:
    5. pass # 占位
    6. print('hello')
    7. print(a)


    程序(program)

  • 程序就是由语句和表达式构成的。

    函数(function)

  • 函数: 专门用来完成特定的功能的语句

  • 函数长的形如: def xxx():
    1. def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
  • 函数的分类:
    • 内置函数 : 或者内建函数,这些函数,包含在编译器的运行时库中,程序员不必书写代码实现它,只需要调用既可。
    • 自定义函数 : 由程序员自主的创建的函数 当我们需要完成某个功能时,就可以去调用内置函数,或者自定义函数
  • 函数的2个要素

    • 参数
    • 返回值

      3.2 标识符

      关键字

  • python一些具有特殊功能的标识符,是python已经使用的了,所以不允许开发者自己定义和关键字相同的名字的标识符

  • 例如以下表达不合法

    print = 1print(print)

  • 查询系统关键字 ```python import keyword print(keyword.kwlist)

[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘async’, ‘await’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’] # 此列表不完全

  1. **
  2. <a name="z83Hd"></a>
  3. ### **标识符****概念** 
  4. - 开发人员在程序中自定义的一些符号和名称。标识符是自己定义的,如变量名 、函数名等
  5. - **组成:由26个英文字母大小写,数字 0-9 符号 _$**
  6. - **标识符的规则:**
  7. - 1.标识符中可以包含字母、数字、_,但是不能使用数字开头 例如:name1 name_1 _name1 1name(不行)
  8. - 2.Python中不能使用关键字和保留字来作为标识符
  9. - 命名方式
  10. - **驼峰命名法**
  11. - 小驼峰式命名法: 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myNameaDog
  12. - 大驼峰式命名法: 每一个单字的首字母都采用大写字母,例如:FirstNameLastName
  13. - **下划线命名法**
  14. - 在程序员中还有一种命名法比较流行,就是用下划线“_”来连接所有的单词,比如 get_url buffer_size
  15. <a name="mLwWi"></a>
  16. ## 变量
  17. - 变量是计算机内存中的一块区域,存储规定范围内的值,值可以改变,通俗的说变量就是给数据起个名字。
  18. - 变量命名规则
  19. - 变量名由字母、数字、下划线组成要符合标识符的命名规范
  20. - 数字不能开头
  21. - 不能使用关键字
  22. - 变量可以是很多的数据类型,不仅仅局限于整数(int)
  23. - 注意 : 两个对象相等和两个对象是同一个对象是两个概念
  24. <br />
  25. <a name="aiSWk"></a>
  26. ### 引用变量
  27. - 两个引用指向同一个int数据
  28. ```python
  29. a = 10
  30. b = 10
  31. print(id(a), id(b))

结果:地址一样

  • 两个引用指向同一个str数据

    1. str1 = 'abcdefg'
    2. str2 = 'abcdefg'
    3. print(id(str1), id(str2))

    结果:地址一样

  • 两个引用指向同一个list数据

    1. list1 = [1, 2, 3]
    2. list2 = [1, 2, 3]
    3. print(id(list1), id(list2))

    结果:地址不一样

拷贝

  1. list1 = [1, 2, 3]
  2. list2 = list1.copy()
  3. print(id(list1), id(list2))

结果:地址不一样

  1. a = 1 b = 1
  2. print(id(a),'|', id(b))
  3. 140704525715104 | 140704525715104
  4. d = [1, 2, 3]e = [1, 2, 3]
  5. print(id(d),'|', id(e))
  6. 2625410563520 | 2625411844288
  7. print(d is e) # 判断的是id
  8. print(d == e) # 判读的是值
  9. False
  10. True
  • 任何整数在内存中有固定的位置


作业

1.a,b = 6, 8 我想让a=8 b=6我该怎么办?用2种方式实现

  1. # 1st approach
  2. a, b = 6, 8print('a=', a, 'b=',b)
  3. k = a
  4. a = b
  5. b = k
  6. print('a=', a, 'b=',b)
  7. a= 6 b= 8
  8. a= 8 b= 6
  9. # 2nd approach
  10. a, b = 6, 8print('a=', a, 'b=', b)
  11. a, b = b, a
  12. print('a=', a, 'b=', b)
  13. print("a= %d, b= %d" % (a,b))
  14. a= 6 b= 8
  15. a= 8 b= 6
  16. a= 8, b= 6


  1. 完成字符串的逆序以及统计
  • 设计一个程序,要求只能输入长度低于31的字符串,否则提示用户重新输入
  • 打印出字符串长度

    1. str1 = input('Please input a string:')
    2. while len(str1) >= 31:
    3. str1 = input('The string length is not less than 31, please input again: ')
    4. print('Qualified input:', str1)
    5. print('String length is: ', len(str1))
    1. Please input a string:dddiieeeeeeeeeeeåpdfåclökgopejkflrplöxdkföcllldsee
    2. The string length is not less than 31, please input again: ienisdhoifjeo
    3. Qualified input: ienisdhoifjeo
    4. String length is: 13
  • 使用切片逆序打印出字符串

    1. str2 = input('Please input a string:')
    2. print('There reverse order: ', str2[::-1])
    1. Please input a string:abcdefghijklmnopqrstuvwxyz
    2. There reverse order: zyxwvutsrqponmlkjihgfedcba
  1. 要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印不符合的原因,并提示重新输入
  • 用户名长度6-20,用户名必须以字母开头
  • 密码长度至少6位,不能为纯数字,不能有空格 ```python user_name = input(‘user name:’)

    check user name

    while len(user_name) < 6 or len(user_name) > 20 or not user_name[0:1].isalpha(): if len(user_name) < 6 or len(user_name) > 20:
    1. user_name = input('The user name should be more than 6-20 digits, please input your user name again:')
    if not user_name[0:1].isalpha():
    1. user_name = input('The user name should not be started with an alphabet, please input your user name again: ')
    print(‘user name:’, user_name)

password = input(‘password: ‘)

check password

while len(password) < 6 or password.isdigit() or ‘ ‘ in password: if len(password) < 6: password = input(‘The password must be longer than 6 digits, please input your password again:’) if password.isdigit(): password = input(‘The password must not be pure number, please input your password again:’) if ‘’ in password: password = input(‘The password must not have spaces in it, please input your password again:’) print(‘password:’, password)

  1. ```python
  2. user name:eiie
  3. The user name should be more than 6-20 digits, please input your user name again:ieiiiiiiiiiiiiiiiiiiifjjggjj
  4. The user name should be more than 6-20 digits, please input your user name again:4444 iieiei
  5. The user name should not be started with an alphabet, please input your user name again: dkjrierr 4dfk
  6. user name: dkjrierr 4dfk
  7. password: isen
  8. The password must be longer than 6 digits, please input your password again:icki233 i8
  9. The password must not have spaces in it, please input your password again:4444444444444444
  10. The password must not be pure number, please input your password again:dineikdi8'
  11. The password must not have spaces in it, please input your password again:dieinci83kk'
  12. password: dieinci83kk'