刘刚刚的个人博客

python基础-杂项


1.接收用户输入 2.格式化输出 3.可变与不可变类型 4.深浅拷贝 5.列表模拟堆栈

占位

...代表代码略过

接受用户输入

语法

age = input("请输入你的年龄:")
在python3中,input() 会将用户输入的所有内容都保存成字符串类型。
在python2中,raw_input()的功能与python3的input一样,而使用input()时,用户输入的什么类型就存成什么类型

输出

print()

print()可以用逗号隔开接受多个参数,此时输出时,各个参数间会以空格隔开

print() 默认以回车结尾,可以传入 end 参数指定结尾字符

print(1,2) //=> 1 2

print(1,end="*")
print(2,end="*")
//=>1*2*

r 可以调整指针的位置,一般用于进度条的打印

print('\r%d'%1,end='')  
print('\r%d'%1,end='')  #打印时只会留最后一次打印的内容

格式化字符串输出

  1. %s

    • 可以按照位置一一对应,少一个多一个都不行。
    res = "my name is %s my age is %s" %('shuta','18')
    • 也可以用字典的形式,打破位置的限制
    res = "my name is %(name)s age is %(age)s" %{'name':'shuta','age':'18'}
    • %s 可以接受任意类型的传值,
    res = "my name is %s" %[1,2]
res = "my name is %s" %['name':1,'age':2]
res = "my name is %d"  %18   
  1. str.format

    • 按照位置传值
    res = "my name is {} my age is {}".format('shuta',18)
    • 按照索引传值
    res = "my name is {0}{0} my age is {1}".format('shuta',18)
    • 按照KV传值
    res = "my name is {name} my age is {age}".format(name='shuta',age=18)
  2. f (python3.5后版本支持)
   x = 'shuta'

   y = 18

   res = f'my name is {x} my age is {y}'

三种格式化输出方式

效率对比: f>format>%s

推荐使用 format,format 在2.6版本推出,目前python2的常用版本是2.7,该函数在2和3中都可以用

可变与不可变类型

  1. 可变类型:值改变,id 不变,证明改的是原值

    list、dict

    不可变类型:值改变,id 不变,证明产生的是新值,原值没有改变

    int 、float、str 、bool

  2. int 为不可变类型

    float 为不可变类型

    str 为不可变类型

深浅拷贝

  • 浅拷贝

    将一个列表变量赋值给另外一个变量时,如果改动一个变量则另外一个也会改动

    第一层可变类型与不可变类型的地址都一样

  • 深拷贝

    赋值时,会产生新的内存地址,会将不可变类型的内存地址原模原样给新的内存地址,可变类型的内存地址则会变.

    原因:不可变类型对读操作不影响,写操作会自动重新产生

    import copy
    list1 = ['shuta','shuta2','shuta3']
    list2 = copy.deepcopy(list1)

列表模拟队列与堆栈

队列

特点:先进先出 FIFO

//入队
list1.append(value)
//出队
list1.pop(0)

堆栈

特点: 后进先出

//入栈
list1.append()
//出栈
list1.pop()

字符编码

python解释器执行文件的流程:

  1. 启动解释器
  2. 从硬盘读取文件到内存中
  3. 解释执行读入内存的内容,开始识别语法

字符编码介绍

字符与二进制的对应关系称为字符编码表

ASCII表

  1. 只支持引文字符串
  2. 采用8位二进制对应一个英文字符串

** 在内存中固定使用的是unicode,在硬盘中存储文件的编码可以位其他 ,因此就出现了兼容问题。

unicode 所有的字符都通过2个字节进行保存,出现的问题:当一个文件中大部分字符只用一个字节是,前一个字节为空,导致io问题。

utf-8: 英文使用1个字节,汉字使用3个字节。减少了保存文件时的IO和文件大小

2.文本文件存取乱码问题

存乱 解决:编码格式应该设置成hi吃文件内字符串的格式

取乱 解决:文件是什么方式存的,就用什么方式读

解释器默认读文件的编码

python2默认:ASCII

python3默认:utf-8

文件头的写法:

在文件的首行写:# coding:utf-8 ,代表的是读的编码

pycharm 右下角的编码代表存的编码

保证运行python程序前两个阶段不乱码的方法:

指定文件头

python3的str类型默认直接存成unicode格式,无论如何不会乱码

要保证python2的str不乱码 需要在字符串值前加u

x = u’上’

python2中有两种字符串类型 str、unicode

str会按照文件头的保存类型进行存储str

我的名片

昵称:shuta

职业:后台开发(php)

邮箱:648949076@qq.com

站点信息

建站时间: 2020/2/19
网站程序: ANTD PRO VUE + TP6.0
晋ICP备18007778号