第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

 

程序退出

 

posted @ 2018-08-17 17:42  feifei_tian  阅读(155)  评论(0编辑  收藏  举报