第4次全天课笔记-20180805
第四次全天课笔记:
1. 26个字母大小写写成对打印,例如:Aa,Bb,Cc
1 for i in range(26): 2 print(chr(ord("A")+i),chr(ord("a")+i))
2. 一个list包含数字或字母,然后生成新的list,list的所有数字+1.
list1 = [1,2,3,4,5,6,7,8,9,10,”A”,”B”] list2 = []
for i in list1: if isinstance(i,(int,float)): list2.append(i+1) else: list2.append(i) print(list2)
3. 倒序取出每个单词的首字母
1 s = "I am a good boy!" 2 list2 = [] 3 4 list1 = s.split(" ") 5 list1.reverse() 6 7 for i in list1: 8 list2.append(i[0]) 9 10 print(list2)
或者
1 s = "I am a good boy!" 2 list2 = [] 3 4 for i in s.split(" ")[::-1]: 5 list2.append(i[0]) 6 7 print(list2)
4. 请大家找出 s="aabbccddxxxxffff"中出现次数最多的字母
s="aabbccddxxxxffff" max_occurence_times_letters = [] max_occurence_times = 0 for i in s: if s.count(i) > max_occurence_times: max_occurence_times_letters=[] max_occurence_times_letters.append(i) max_occurence_times = s.count(i) elif s.count(i) == max_occurence_times: max_occurence_times_letters.append(i) print(list(set(max_occurence_times_letters))) print(max_occurence_times)
方法2:
s = "aabbccddxxxxffff" letters_dict = {} for c in s: letters_dict[c] = s.count(c) for k,v in letters_dict.items(): if letters_dict[k] == max(letters_dict.values()): print(k)
一个字典,查询出出现次数最好的字母
方法1:
d = {"a":1,"b":2,"c":3,"d":4,"e":4} letters= [] times = 0 for k,v in d.items(): if v > times: letters = [] times = v letters.append(k) elif v == times: letters.append(k) print(letters) print(times)
方法2:
d = {'a':1,"b":2,"c":3,"d":4,"e":4} max_value= max(d.values()) result = [] for k,v in d.items(): if v == max_value: result.append(k) print(result)
自己写一个count函数
def count_occurence(s,letter): times = 0 for i in s: if letter ==i: times+=1 return times print(count_occurence("aaaajjjjj33jjd","j")) print(count_occurence("aaaajjjjj33jjd","m"))
原码/反码/补码
二进制:0、1
>>> bin(10)
'0b1010'
八进制:
>>> oct(9)
'0o11'
十六进制:
>>> hex(30)
'0x1e'
原码
[+1]原 = 0000 0001
[-1]原 = 1000 0001
所以8位二进制数的取值范围就是:[1111 1111 , 0111 1111],即:[-127 , 127]
反码的表示方法是:
正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
补码:
补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
除法
>>> round(0.5)
0
>>> round(0.51)
1
>>> round(0.556,2) #取2位
0.56
>>> divmod(5,2) #同时取商和余数
(2, 1)
如何自己写出这个函数?
def divmod1(a,b):
c = a // b
d = a % b
return c,d
print(divmod1(5,2))
>>> bin(3)
'0b11'
>>> bin(3)[2:].zfill(8) #将0b去掉,前面补齐0
'00000011'
>>> int(bin(3),base=2)
3
>>> int(bin(3)[2:],base=10) #默认base=10
11
逻辑运算:
and or not
什么样的是False: 0 “” [] {} None False
>>> if 0:
... print("hh") #数字0是False
...
>>> if "0":
... print("hh") #字符串0是True
...
Hh
敏捷:
每个需求阶段:1周到1月,推荐2周。只做明确的需求。
自动化测试:UI测试、接口测试、单元测试
微软、谷歌、facebook:单元测试
原因:颗粒度最细,执行很快,全员可以参与
敏捷:
1. 不强调文档,强调沟通
2. 不过度设计,只做明确需求
3. 使用自动化测试,单元测试最好
Tdd:测试驱动开发
先写测试用例,再写代码,让测试用例通过。
4. 持续集成: jenkins
5. 上线:测试上线比较好,对上线内容的控制力,把控质量标准
探索式测试:华为公司做得比较好
成员运算符,测试实例包含了一系列的成员,包括字符串,列表,元组等。 (in, not in)
>>> "a" in "dddd"
False
>>> "a" in {"a":1,"b":2}
True
>>> "a" in ["a","b"]
True
>>> "a" in ("a","b")
True
>>> "a" in set(["a","b"])
True
身份运算符
》256之后,地址就不一样了
>>> a=1
>>> b=1
>>> a is b
True
>>> a=1000
>>> b=1000
>>> id(a)
29994704
>>> id(b)
34630320
>>> a is b
False
>>> eval("1+2")
3
>>> s="print('hhhh')"
>>> exec(s) #直接执行python语句
Hhhh
Import operator
print (operator.add(1,1))
print (operator.sub(2,1))
print (operator.mul(2,3))
print (operator.truediv(6,2))
print (operator.contains("ab","a"))
print (operator.pow(2,3))
print (operator.ge(1,1))
print (operator.ge(2,1))
print (operator.le(1,2))
print (operator.eq(1,1))
标准输出
>>> import sys
>>> sys.stdout.write("hihihi")
hihihi6
标准错误输出
>>> sys.stderr.write("hhhhh")
5
hhhhh>>>
标准读入
>>> a=sys.stdin.read()
jjj
hhhh
^Z
>>> a
'jjj\nhhhh\n'
把字符串中的所有数字删除掉
s = "a1b2c3b4d5" no_digit_list = [] for i in s: if i not in "0123456789": no_digit_list.append(i) result = "".join(no_digit_list) print(result)
一行的表示:
>>> "".join([i for i in "a1b2c3b4d5" if i not in "0123456789"])
'abcbd'
推倒列表
数字函数
给3个数排序
a = [1,2,3,4,5] def max(a): #找到列表的最大值 max_num = a[0] for i in a: if i > max_num: max_num =i return max_num l=[1,2,3] a=max(l) l.remove(a) b=max(l) l.remove(b) c=l[0] print(a,b,c)
>>> import random
>>> random.random() #从0到1 的小数
0.7250679200707006
>>> int(random.random()*100) #获取两位整数
99
>>> int(random.random()*100)
31
>>> random.randint(0,100) #获取0-100的随机整数
37
>>> random.randint(0,100)
练习:
生成混合的9位数字字母的密码
import string import random pass_wd = "" for i in range(9 ): if random.randint(0,1): pass_wd+=string.ascii_letters[random.randint(0,51)] else: pass_wd+="0123456789"[random.randint(0,9)] print (pass_wd)
if random.randint(0,1):
#就是随机位置,当if 0时,就是false,那就执行else的代码块,如果if 1时,就是true那就执行if中的代码块,这样就实现了,字母和数字的混合
>>> random.uniform(1,10)
4.086943225277189
>>> random.uniform(1,1000)
359.14498595535434
程序退出