【python】小问题
路径表示
window下路径用的是\
,比如C:\windows
,而在python中\
被视为转义符,表达路径,需要用/
或者\\
相对路径表示:./PYE/f.txt
,含义是从可执行程序的当前目录起找他的PYE目录,以及这个目录下的f.txt文件,如果与所在文件在相同目录,可以直接使用f.txt
本质:从该程序,较好地找到文件
处理数据,要铭记字符串在心
任何输入的数据都可以用字符串去保存,去处理。
不能修改原字符串,新建一个空字符串处理。
引号
单引号与双引号都是字符串定界符。
如果字符串里面包含的与边界一样的符号,需要在前面添加一个转义符\
来将该符号转成普通字符,不然编译器会将字符串中的那个单引号或双引号当成字符串的边界。
例如:
‘I don’t have apple’
中间的那个单引号要加转义符,将单引号从字符串定界符转为普通字符。
‘I don\’t have apple’
如果字符串边界是单引号,字符串内包含的是双引号则不需要转义。
如果字符串边界是双引号,字符串内包含的是单引号也不需要转义。
三个双引号的作用是可以直接写多行的字符串
例如:
str=”“”one line
two line
three line”“”
为Cookies添加引号
第一个输入框(.?)😦.?)\n,第二个输入框’$1’:’$2’,
批量安装库脚本
import os
#libs = {"numpy", "matplotlib", "pillow", "sklearn", "requests",
# "jieba", "beautifulsoup4", "wheel", "networkx", "sympy",
# "pyinstaller", "django", "flask", "werobot", "pyqt5"
# , "pandas", "pyopengl", "pypdf2", "docopt", "pygame"}
libs ={"requests","jieba","selenium"}
try:
for lib in libs:
os.system("pip install " + lib)
print("Successful")
except:
print("Failed Somehow")
range()函数
range(start, stop[, step])
参数说明:
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
end=’’
print默认是\n结尾的,如果想一整行连续打印,则需要end=" "
为末尾end传递一个空字符串,这样print函数不会在字符串末尾添加一个换行符,而是添加一个空字符串。
多个输入
a,b,c=map(int,input().split())
不确定个数的输入,可以用list[]装载
lst=[]
lst=list(map(int,input().split()))
字符串逆序
[::-1]可以实现逆序
str2=str1[::-1]
format()函数
{:.1f}取一位小数
数字格式化
下表展示了 str.format() 格式化数字的多种方法:
print("{:.2f}".format(3.1415926))
3.14
数字 | 格式 | 输出 | 描述 |
---|---|---|---|
3.1415926 | {:.2f} | 3.14 | 保留小数点后两位 |
3.1415926 | {:+.2f} | +3.14 | 带符号保留小数点后两位 |
-1 | {:+.2f} | -1.00 | 带符号保留小数点后两位 |
2.71828 | {:.0f} | 3 | 不带小数 |
5 | {:0>2d} | 05 | 数字补零 (填充左边, 宽度为2) |
5 | {:x<4d} | 5xxx | 数字补x (填充右边, 宽度为4) |
10 | {:x<4d} | 10xx | 数字补x (填充右边, 宽度为4) |
1000000 | {:,} | 1,000,000 | 以逗号分隔的数字格式 |
0.25 | {:.2%} | 25.00% | 百分比格式 |
1000000000 | {:.2e} | 1.00e+09 | 指数记法 |
13 | {:>10d} | 13 | 右对齐 (默认, 宽度为10) |
13 | {:<10d} | 13 | 左对齐 (宽度为10) |
13 | {:^10d} | 13 | 中间对齐 (宽度为10) |
第二个参数占6个字符,向右对齐,保留一位小数输出。
print("%d%6.1f"%(F,5*(F-32)/9))
求幂函数pow()
math 模块 pow() 方法的语法:
import math
pow( x, y )
转换函数-int(string,number)
a,b=input().split(",")#赋值完成之后,变量a和变量b都是字符串类型。
b = eval(b)#将字符串b,如果是单引号或双引号的话,则解析成int类型,三引号的话,解析成str类型。eval(string)
print(int(a,b))#int(string,number),进制转换;
三个数排序-冒泡最好,借助中间变量替换值,或者借助list列表的sort函数。
list=[]
list.append(a)
list.append(b)
list.append(c)
list.sort()
&&->and ||->or +±>+=1
python中是没有&&及||这两个运算符的,取而代之的是英文and和or。其他运算符没有变动。也没有++符号,需要s=s+1或s+=1
注意:python没有++符号!
eval
原样输出,eval
print() 进行一次换行
首先明白,哪些函数是必须要执行的。必须放在if后面。
首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。
list接受动态长度数据输入
list=list(map(int,input().split()))
split()
split()通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串。
如果split()参数为空,那么会把单个空格和多个空格都处理掉。
输出格式控制
{:<4d}左对齐,占4个字符。
元组类型
type((1))
<class ‘int’type((1,))
<class ‘tuple’>
Python 中的 tuple 结构为 “不可变序列”,用小括号表示。为了区别数学中表示优先级的小括号,当 tuple 中只含一个元素时,需要在元素后加上逗号。
详情可参考文档中的解释:Using a trailing comma for a singleton tuple:a,or(a,)
_name_的值
运行print_module.py后的结果如下:
自己运行自己的程序,name 即为__main__当程序当做脚本被别人调用运行时,其__name__ 为自己的模块名称,这里的print_func即被导入到print_module中当做脚本被运行时,则print_func的__name__即变为其自身的模块名。
关于拷贝
import copy
a = [1, 2, 3, 4, [‘a’, ‘b’]]
b = a # 引用,除非直接给a重新赋值,否则a变则b变,b变则a变
c = copy.copy(a) # 浅复制,只会拷贝父对象, 不会拷贝父对象中的子对象,所以若a的子对象变则c 变,但是父对象变c不会变
d = copy.deepcopy(a) #深拷贝,完全拷贝,完全独立于原对象,a变也不变
a.append(5) # 改变父对象
a[4].append(‘c’) #改变父对象中的 [‘a’, ‘b’]子对象