函数evaluate不识别公式中的中括号怎么办(没有evaluate函数)
712
2022-05-29
文章目录
注意规范
一、基础操作题
二、面向对象OOP
三、算法题
第一题
第二题
第三题
注意规范
(1)加上文件头
#!/usr/bin/Python ## -*- coding: utf-8 -*-
1
2
#!/usr/bin/python指定有什么解释器运行脚本及解释器所在的位置
原因:脚本语言共同遵守的规则:当第一行为 #!/path/to/script/interpreter时,指定了用来执行本脚本的解释器。
例如:
#!/bin/sh shell脚本 #!/usr/bin/perl perl脚本 #!/usr/bin/python python脚本 #!/usr/bin/python2 python2脚本 #!/usr/bin/python3 python3脚本
1
2
3
4
5
#!/usr/bin/env会自动搜索脚本解释器的绝对路径
(2)编码规范:运算符前后加1个空格(以对齐为目的可以用tab)、函数参数间的逗号后加1个空格、global声明只能放在函数的开头、设置一个tab键为4个空格
一、基础操作题
1.获取字符串“123456”最后2个字符
strf='123456' print(str[-2:])
1
2
2.一个编码为GBK的字符串S,要将其转为UTF-8的字符串
a="啊啊啊" #py3中默认编码是unicode bytes(a,"gdk") ans1=a.encode("utf-8") print(ans1)
1
2
3
4
3.Alist[1,2,3,1,2]对列表元素去重
list=[1,3,4,1,2] s1.set(list) print s1
1
2
3
list[-1]代表最后一个元素;list[a:-1]指向了倒数第二个
4.实现“1,2,3”变成[“1”,“2”,“3”]
str="1,2,3" ans=str.split(',') print(ans)
1
2
3
5.合并两个字典a={“A”:1,“B”:2},b={“C”:3,“D”,4}
a={"A":1,"B":2} b={"C":3,"D":4} ans=dict(a.items()+b.items()) a.update(b)#用这种方法比较多 print(ans) print(a)
1
2
3
4
5
6
6.实现tuple和list的转换
alist=[123,'abc'] atuple=tuple(alist)
1
2
7.把元组(“a”,“b”)和元组(1,2)变成{“a”:1,“b”:2}
a=("a","b") b=(1,2) d=dict(zip(a,b))#字典序
1
2
3
8.打乱一个列表的元素
import random x=[i for i in range(100)] print(x) x.random.shuffle() print(x)
1
2
3
4
5
9.给定2个list,A和B,找出相同元素和不同元素
a=[i for i in range(1,99,2)] b=[j for j in range(2,100,2)]#偶数 x=[x in a if x in b] y=[y in (a+b) if y not in x]#非共有的数
1
2
3
4
注意列表解析的用法:
lst1 = [i*2 for i in range(1,11)] print(lst1) # 结果为[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
1
2
3
再如:创建一个全部为问号的二维数组(Length行Length列):
lst1 = [['?'] * Length for i in range(Length)]
1
10.a="hello"和b="你好"编码成bytes类型
bytes('hello','utf-8') bytes('您好','gbk')
1
2
tuple=(1,2,'hi') print(len(tuple)) list=[100,23,45] print(list[0]) hello=['hi','hello'] world=['earth','field','universe'] hello.append('你好') print(hello) hello.extend(world) #插入列表 print(hello) hello.insert(0,'我的天啊') print(hello) hello.remove('你好') print(hello)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
11.注意打印的格式
print('The boss named %(name)s is %(age)d-year-old and %(height)g tall.' % boss)
1
12.各种队列
队列from queue import Queue(maxsize)
13.输出所有的大写字母和数字
https://www.cnblogs.com/pyse/p/9847812.html
14.input注意
在 Python3.x 中 raw_input() 和 input() 进行了整合,去除了 raw_input( ),仅保留了input( )函数,其接收任意任性输入,将所有输入默认为字符串处理,并返回字符串类型。
15.三引号是可以换行写代码(有时候代码过长,换行会便于理解和阅读)
三引号字符串作为docstring
16.(1)全角用2个标准字符的位置,占2个字节
汉语是全角,注意全角的数字是半角的数字的位置的2倍。
(2)半角用1个标准字符的位置,占1个字节
英文字母、数字和字符都是半角
17.禁止空格和tab键混用,indent是缩进的意思,会报错unindent does not match 啥的
18.避免使用from … import …
如A.py中定义 flag=1 B.py中用了 from A import *
1
2
3
4
5
如果在某个地方改了A.py的flag值——A.flag=0,这时打印A模块和B模块的a的值则不一样(0,1)
19.变量只是引用对象的名称,不会创建副本。
x=[1,2,3,4] y=x y[0]=0 print(x) #[0,2,3,4] print(y) #[0,2,3,4]
1
2
3
4
5
20.遍历时删除列表项
num_list=[1,2,3,4,5] for i in xrange(len(num_list)): if nym_list[i]==2: num_list.pop(i) else: print num_list[i] print num_list
1
2
3
4
5
6
7
会报错:indexError:list index out of range,可以这么改(多一句):
num_list=[1,2,3,4,5] for i in xrange(len(num_list)): if i>- len(num_list): break if nym_list[i]==2: num_list.pop(i) else: print num_list[i] print num_list
1
2
3
4
5
6
7
8
9
或者更好的方法:
num_list=[1,2,2,4,5] num_list=[i for i in num_list if i!=2] num_list=[] for i in num_list: if i!=2: new_list.append(i)
1
2
3
4
5
6
7
8
21.函数默认参数使用可变类型
def saver(x=[]): x.append(1) print(x) saver([2]) #[2,1] saver() #[1] saver() #[1,1] saver() #[1,1,1]
1
2
3
4
5
6
7
8
正确做法:
def saver(x=None): if x is None: x=[] x.append(1) print(x) saver([2]) #[2,1] saver() #[1] saver() #[1]
1
2
3
4
5
6
7
8
22.
不正确的使用类变量
方法顺序解析MRO
class A(object): x=1 class B(A): pass class C(A): pass print A.x,B.x,C.x #1,1,1 B.x=2 print A.x,B.x,C.X #1,2,1 A.x=3 print A.x,B.x,C.x #3,2,3
1
2
3
4
5
6
7
8
9
23.将字符串数字转为数字型,直接int(str)即可。
24.注意
printf是自动带换行的(很容易忘记这点),
另外input默认输入为字符串,如果要用成数字可以用int(str)等进行转换
。
如:输入" 0 1 2 3 …Length-1"
ans = [i for i in range(0, Length)] for j in range(len(ans)+1): if j == 0: print(" ",end = " ") else: if j == Length: print("%d"%(j - 1)) else: print("%d"%(j - 1),end = " ")
1
2
3
4
5
6
7
8
9
官方文档:format会代替%,所以多用format。
25.创建一个集合:
可以使用大括号 { } 或者 set() 函数创建集合,
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
N1 = {1, 'A', 2, 3, 4, 4, 4} print(N1) # {1, 2, 3, 4, 'A'}
1
2
26.元组的索引,有一种是两个双引号的,最后数字代表步长:
sentence = '''andyguo happy''' sentence1 = '''aaaabbbb''' s1 = sentence[1:6:2] # 步长为2,nyu s2 = sentence[:] # 所有元素 print(s1) print(s2)
1
2
3
4
5
6
27.find用于查找字符串的子串
find(substr, beg=0, end=len(string)):
在[beg, end]范围内查找substring,找到返回substr的起始下标,否则返回 -1。
string = 'Hello Python' print(string.find('h', 0, len(string))) # 输出 9 print(string.find('thon') # 输出 8 print(strin.find('thon', 9, len(string)) # 输出 -1
1
2
3
4
28.可以通过setdefault()对空字典进行赋值:
# 字典赋值:setdefault() d=dict() #产生空字典 D={} #产生空字典 d.setdefault('a',0) D.setdefault('b',[1,2,3,4,5]) print(d) print(D) # {'a': 0} # {'b': [1, 2, 3, 4, 5]}
1
2
3
4
5
6
7
8
9
二、面向对象OOP
(1)类的成员函数参数第一个记得加上self,类中的成员变量记得前面加上self.
(2)如果父类有子类则记得有(object),如果没有子类则括号都没;
(3)主函数开头记得有if __name__ == '__main__':
(4)尽量少使用全局变量,如果要用则简单是写在同个项目的另一个文件(如文件名为globalvar)中,在主程序开头记得import globalvar as gl,也可以不写gl用其他名;
(5)除非从事底层开发,否则很少使用继承(子类重写方法后有错不好查)
类的4种关系:继承、实例化、组合、认识
(6)
三、算法题
第一题
编写一个类Cpeople(人的姓名str、年龄str、性别bool、工号int),依次从键盘或文件上输入每个人的如上信息。遍历输出所有男性员工信息;按年龄为序输出所有员工,同年龄则以工号升序为序
存储Cpeople类对象的数据结构用list或dict
注意:输出要列对齐
#!/usr/bin/python2 ## -*- coding: utf-8 -*- import functools import re class CPerson: def __init__(self,name,age,sex,number): self.name=name self.age=age self.sex=sex self.number=number def MyCmp(self,other): if self.age>other.age: return 1 elif self.age==other.age: if self.number 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 结果为: 请输入人数:2 请输入个人信息:andy 11 男 666 男员工: 姓名:andy 年龄: 11 性别: 男 工号: 666 请输入个人信息:luo 22 男 007 男员工: 姓名:luo 年龄: 22 性别: 男 工号: 007 ----------------- 所有的员工信息如下: 姓名:andy 11 男 666 姓名:luo 22 男 007 1 2 3 4 5 6 7 8 9 10 11 第二题 加密四位整数,规则如下:每位数字加5,用和除以10的余数代替该位的数字,再将第一位和第四位交换,第二位和第三位交换 #!/usr/bin/python ## -*- coding: utf-8 -*- def encode(a): c = [] for i in range(4): c.append(int(a[i])) for j in range(4): c[j] = (c[j] + 5) % 10 c[0], c[3] = c[3], c[0] c[1], c[2] = c[2], c[1] #print(c) for k in range(4): print(c[k], end='') a = input("请输入四位数:") print("一开始的数字:",a) #print(type(a)) print("加密后的数字:") encode(a) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 第三题 在键盘上,左手每隔2秒按下一个子母键盘(依次A-Z),右手每隔5秒按下一个数字键(0-9),模拟求按下第100个键是哪个手,哪个键。 #!/usr/bin/python ## -*- coding: utf-8 -*- BigZ=[chr(i) for i in range(65, 91)]#大写字母A-Z Num=[int(i) for i in range(0,9)]#数字0-9 time=0 num1=0 num2=0 flag=0 while(1): global ans #每次遍历为1s flag=flag+1 if(time%2==0): num1=num1+1 if(flag==100): ans='left' break if(time%5==0): num2=num2+1 if(flag==100): ans='right' break print(ans) if(ans=='left'): a=BigZ[num1%26] print(a) if(ans=='right'): a=Num[num2%10] print(a) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Python
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。