乐趣区

python-基础知识

python 基础知识

说明:

  1. 当前版本:3.7.0
  2. 所有示例都是写在文件中.py
  3. 参考教程:Python 教程
  4. 执行文件python index.py
  5. 所有的代码都在同一个文件 index.py 中,各部分引用变量一致。

起步

  1. 输出一个hello world;

    print("hello world")

    注意:在 .py 文件中代码是不能随意缩进的,不然执行报错

  2. 用户输入;

    name = input("please input your name \n");
    print("welcome",name)

    执行文件后,等待用户输入,按 enter 结束输入,打印welcome XXX.

    注意:

    • 用户输入的值类型是字符串
  3. if...else语句

    # if block
    if name=="admin":
        print("欢迎管理员登陆!")
    else:
        print("登陆成功!")

    说明

    • if...else语句以 : 结束,语句块缩进表示;
    • # 表示注释,描写代码块的功能。
  4. 数据类型
    整数、浮点数、字符串、布尔值、空值

    # '\' 转义
    print("hello \n world")
    # '\t' 制表符 '\n' 换行‘r'XXX'’定义内容部不专一
    print(r"hello \n world");
    #‘'''xxx'''’格式化文本换行
    print('''hello
    world''')
    # 布尔运算符 and or not         
    print(8>5 and 8<10)

    说明:

    • 浮点数科学计数法表示:2e10
    • 布尔值大写的True / False
    • 变量命名是大小写敏感的,如:name/Name 不同。
    • 空值表示为none
    • 变量定义遵循基本的规则:英文、数字、下划线,不能以数字开头。
    • 常量定义不能改变的变量,用大写表示。
  5. 字符串

    # ord 对单个字符编码 chr 对单个字符的解码
    Name = ord('国')
    print(Name)
    # "国" 22269
    Name_ = chr(Name)
    print(Name_)
    # b'xx' 表示字节码
    # "中国" b'\xe4\xb8\xad\xe5\x9b\xbd'
    print("中国".encode("utf-8"))    
    # len 计算字符长度
    print(len("hello world"))
    # 文本格式化 
    print("%d 周年" % 70)
    # format() 格式化方法
    print("{0}周年".format(70))

    说明:

    • encode()编码;decode()进行解码;
    • 指定编码类型,如果超出编码范围,就会报错; 中文超出ASCII;
    • %s 字符串;%d整数;%f浮点数;%x十六进制数;%%转义输出%
    • format()格式化方法;
  6. 数据结构list

    # list 
    names = ["花花","小亮","明总"]
    print(names[0])
    # udpate 
    names[0] = 70;
    
    # tuple 元组
    names_ = (1949,2019,70)
    print(names_[2])

    说明

    • append() 往后添加一个元素;insert(index,name)插入元素到指定位置;pop()删除末尾元素;
    • 元组具有不可变性,即其中的元素一经初始化是不能改变的;
    • 元组中元素指向的是一个对象,那对象属性的改变是没有关系的。
    • 元组定义一个元素是 (12) 会存在算数歧义,为了区分如此声明(12,)
  7. 循环

    # for ... in 循环
    for item in names:
        print(item)
    # while 循环
    num = 3
    while num>1:
        print(num*2)
        num = num-1

    说明:

    • range(11)生成 0-10 的整数序列;
    • break跳出循环;
    • continue跳过本次循环;
  8. 使用 dict 字典。
    类似对象、以键值对存储数据;

    # dict
    user = {"袁明":23,"鲁花":32,"祖国":70}
    print(user["祖国"])
    # keys() / values() / items()
    for key in user.keys():
        print(key,user[key])
    # set 只存储值,不重复
    age = set([23,32,70,32])
    print(age)

    说明:

    • ... in ... 判断 key 值是否存在于字典中;
    • get()获取值,不存在返回none,接受第二个参数作为不存在时的返回值;
    • pop()删除一个键值对;
    • add()set 中添加一个值;remove()则移除一个值;
    • values()返回字典值集合;keys()返回键值集合;items()key,value 进行迭代处理;
  9. 函数

    # 系统内置函数 , 如 abs() 求绝对值
    abs(-100)
    # 自定义函数
    def add(num1,num2):
        return num1+num2
    print(add(100,1))
    # 返回多个值,类似解构赋值
    def add(num1,num2):
        return num1,num2
    res1,res2 = add(100,1)
    print(res1,res2)
    # 函数可变参数
    def add(*nums):
        total = 0
        for n in nums:
            total+=n
        return total
    print(add(3,4,5,6))
    # 函数关键参数,即必须传入的参数和可选参数,def addUser(name,**other):
        print({"name":name,"other":other)
    addUser("祖国",age=70,desc="生日快乐!")
    # 参数传入时,可传入 dict , 
    info = {"age":70,"desc":"生日快乐!"}
    addUser("祖国",**info)
    
    # 命名关键字,即指定可选参数的名称 , 以下 只能传递 'age' 属性
    def addUser(name,*,age):
    print({"name":name,"other":age})
    addUser("祖国",age=70)

    说明:

    • max()最大值;内置函数规定了参数类型,参数个数,不合规则就报错;
    • 没有给定返回值的函数, 默认返回none;
    • 返回多个值时,可以进行解构复制,赋值给变量进行使用;
    • 函数参数定义,接受默认参数定义def add(num1,num2=70)
    • 模拟可变参数:

      1. 传入 list 对象,模拟传递不确定个数的参数;
      2. *定义参数为可变参数;
      3. **定义参数为可选参数;
    • 参数传入时,**会转换对象,按键值对传入到 **other
  10. 尾递归优化
    之前 js 也写过:es6 函数扩展
    代码比较短,贴一下:

     
     // 尾调用优化
     function factorial(n,total){if(n===1) return total;
         return factorial(n-1,n*total);
     } 
    

    意义在于每次调用都能获得累积值,并作为参数传入下一次调用函数中。

    # total 作为上一次函数调用后计算的值,传入下一个参数
    def factorial(n,total):
        if n==1:
            return total
        return factorial(n-1,n*total)
    print(factorial(10,1))

注意:

  • if语句、while语句、函数定义等含有语句块的都有:,且语句块需要缩进;

附所有代码执行结果:

退出移动版