第4次全天課筆記-20180805

第四次全天課筆記:python

1. 26個字母大小寫寫成對打印,例如:Aa,Bb,Ccgit

1 for i in range(26):
2     print(chr(ord("A")+i),chr(ord("a")+i))

2. 一個list包含數字或字母,而後生成新的list,list的全部數字+1.app

 

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. 倒序取出每一個單詞的首字母dom

 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:spa

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函數code

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

 

程序退出

相關文章
相關標籤/搜索