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='') #打印时只会留最后一次打印的内容
格式化字符串输出
%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
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)
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中都可以用
可变与不可变类型
可变类型:值改变,id 不变,证明改的是原值
list、dict
不可变类型:值改变,id 不变,证明产生的是新值,原值没有改变
int 、float、str 、bool
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解释器执行文件的流程:
启动解释器
从硬盘读取文件到内存中
解释执行读入内存的内容,开始识别语法
字符编码介绍
字符与二进制的对应关系称为字符编码表
ASCII表
只支持引文字符串
采用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