20181207hw 小作業3 小作業4 小作業5 小作業6
小作業3
5. 嘗試實現一個管理系統
=======通訊錄管理系統=======
1.增加姓名和手機
2.刪除姓名
3.修改手機
4.查詢所有使用者
5.根據姓名查詢手機號
6.退出
============================
d = {} lists = ( '增加姓名和手機' , '刪除姓名' , '修改手機' , '查詢所有使用者' , '根據姓名查手機' , '退出' ) print("{:=^20}".format('通訊錄')) for i in range( len( lists ) ): print( i+1 , '.{}'.format( lists[i] ) )print( "{:=^23}".format( '' ) ) while True: n = int( input( "請選擇操作:" ) ) if n == 6 : print( '謝謝使用,再見!!!' ) break elif n not in ( 1 , 2 , 3 , 4 , 5 ): print( '輸入錯誤!!!' ) continue else: if n == 1: name = input( '請輸入姓名:' )if name not in d.keys(): d[name] = input( '請輸入手機號:' ) else: print( '{}已經在通訊錄中'.format(name) ) elif n == 2: name = input( '請輸入姓名:' ) if name in d.keys(): d.pop( name ) else: print('查無此人!!!' ) continue elif n == 3: name = input( '請輸入姓名:' ) if name in d.keys(): d[ name ] = input( "請輸入新手機號:" ) else: print('查無此人!!!' ) continue elif n == 4: print( list( d.keys() ) ) else: name = input( '請輸入姓名:' ) if name in d.keys(): print( d[ name ] ) else: print('查無此人!!!' )
小作業4
5. 隨機產生密碼:
在26個大小寫字母和10個數字組成的列表中,隨機生成10個8位密碼
import random l = [] for i in range( 10 ): l.append( i ) for i in range( ord('a') , ord('z') + 1 ): l.append( chr(i) ) for i in range( ord('A') , ord('Z') + 1 ): l.append( chr(i) ) passwds = [ '' , '' , '' ] for i in range(3): for j in range(8): passwds[ i ] += str( l[ random.randrange( len( l ) ) ] ) for passwd in passwds: print( passwd )
小作業5
1.通過程式碼實現如下轉換:
• 二進位制轉換成十進位制:v = “0b1111011”
int( v , 2 )
• 十進位制轉換成二進位制:v = 18
bin( v )
• 八進位制轉換成十進位制:v = “011”
int( '0o' + str[1:] , 8 )
• 十進位制轉換成八進位制:v = 30
oct( v )
• 十六進位制轉換成十進位制:v = “0x12”
int( v , 16 )
• 十進位制轉換成十六進位制:v = 87
hex( v )
3.求結果
v1 = 1 or 3 1
v2 = 1 and 3 3
v3 = 0 and 2 and 1 0
v4 = 0 and 2 or 1 1
v5 = 0 and 2 or 1 or 4 1
v6 = 0 or False and 1 False
7.求結果: a. [ i % 2 for i in range(10) ] b. ( i % 2 for i in range(10) )
a.[ 1,3,5,7,9 ]
b.( 1,3,5,7,9 )
8.求結果: a. 1 or 2 b. 1 and 2 c. 1 < (2==2) d. 1 < 2 == 2
a.1
b.2
c.False
d.False
小作業6
1.請寫出與 10 < cost < 50 等價的表示式
cost > 10 and cost < 15
2.Python3 中,一行可以書寫多個語句嗎?
Python3 中,一個語句可以分成多行書寫嗎?
一行可以輸入多條語句,用;(分號)隔開
一個語句可以分成多行書寫,需要在斷開的地方新增 \ 字元,表示這一行尚未結束。
3.我們人類思維是習慣於“四捨五入”法,你有什麼辦法使得 int() 按照“四捨五入”的方式取整嗎?
print( 'float-->int n : {}'.format( int( float( input( 'input float f : ' ) ) + 0.5 ) ) )
4.請用最快速度說出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or7 and 8 and 9
9
5.愛因斯坦曾出過這樣一道有趣的數學題:有一個長階梯,若每步上2階,最後剩1階;若每步上3階,最後剩2階;若每步上5階,最後剩4階;若每步上6階,最後剩5階;只有每步上7階,最後剛好一階也不剩。請程式設計求解該階梯至少有多少階?
i = 1 while True: if ( ( i%2 ) == 1 )and( ( i%3 ) == 2 )and( ( i%5 ) == 4 )and( ( i%6 ) == 5 )and( ( i%7 ) == 0 ): print( i ) break else: i += 1
6.假設有 x = 1,y = 2,z = 3,請問如何快速將三個變數的值互相交換?
x , y , z = z , x , y
7.目測以下程式會列印什麼?
while True:
while True:
break
print(1)
print(2)
break
else:
print(3)
會列印:2
8.member.append(['竹林小溪', 'Crazy迷戀']) 和member.extend(['竹林小溪', 'Crazy迷戀']) 實現的效果一樣嗎?
使用append,是將['竹林小溪', 'Crazy迷戀']看作一個物件,整體打包新增到member物件中,
即member中多了一個成員——['竹林小溪', 'Crazy迷戀']
使用extend,是將new_media看作一個序列,將這個序列和music_media序列合併,並放在其後面,
即member中多了兩個個成員——'竹林小溪' 、'Crazy迷戀'
9.請問如何將下邊這個列表的'小笨蛋'修改為'小壞蛋'?
list1 = [1, [1, 2,['小笨蛋']],3, 5, 8, 13, 18]
list1 = [1, [1, 2,['小笨蛋']],3, 5, 8, 13, 18] list1[1][2] = '小壞蛋'
10.要對一個列表進行順序排序,請問使用什麼方法?
list.sort()# 改變原列表
sorted( list )# 不改變原列表,返回值為排序後的列表
11.要對一個列表進行逆序排序,請問使用什麼方法?
list.sort( reserve = True )
12.什麼情況下你需要使用元組而不是列表?
當元組和列表掉下水,你會救誰?
當不希望內容被輕易改寫的時使用元組
救列表,因為元組在python中序列不可變
13.x, y, z = 1, 2, 3 請問x, y, z是元組嗎
不是
14.編寫一個進位制轉換程式(提示,十進位制轉換二進位制可以用bin()這個BIF):
print( '#進位制轉換#' ) def get_int( str ): flag = 10 if str[:2] == '0b': return [ 2 , int( str , 2 ) ] elif str[:2] == '0o': return [ 8 , int( str , 8 ) ] elif str[:2] == '0x': return [ 16 , int( str , 16 ) ] else: return [ 10 , int( str )] l = get_int( input( '請按進位制格式輸入 number = ' ) ) print( '二進位制 {}\n八進位制 {}\n十進位制 {}\n十六進位制{}'\ .format( bin( l[1] ) , oct( l[1] ) , l[1] , hex( l[1] ) ) )
15.我們根據列表、元祖和字串的共同特點,把它們三統稱為什麼?有什麼共性
統稱有序序列
共性:有序,可索引
18.猜字遊戲,隨機產生10以內的整型數,可供使用者猜,如果猜對,列印“厲害了!500萬屬於你”,如果猜錯,如果比隨機數大,提示,“大了,再給你一次機會”,如果比隨機數小,提示“大膽一點”。使用者最多有三次機會
import random print( '猜字遊戲' ) n = random.randrange( 10 ) i = 0 while i < 3: g = int( input('g = ') ) if g == i: print( '厲害了!500萬屬於你' ) break else : if i in [0,1]: print( '大了,再給你一次機會' if g > n else '大膽一點' ) else: print( '你輸了!!!' ) break i += 1
19.盒子裡有3個紅球,3個藍色球,4個黃球,現劉柱要從盒子裡拿出8個球,問有多少種情況
for r in [1,2,3]: for b in [1,2,3]: for y in [1,2,3,4]: print( 'red:{} blue:{} yellow:{}\n'.format(r,b,y) \ if r + b + y == 8 else '',end='' )
20.列印9 9乘法表
for i in range( 1 , 10 ): for j in range( 1 , i + 1 ): print( '{}*{}={}\t'.format( j , i , i * j ) , end = '') print()
21.猴子得到一堆桃,當天吃了一半之後,又多吃了1個。以後每天,猴子都吃了剩餘的一半桃子之後,又多吃一個。在第10天,只剩下1個桃子。輸出這堆桃最初有多少個
i = 1 for j in range( 10 ): i = ( i + 1 ) * 2 print( i )
5. 隨機產生密碼:
在26個大小寫字母和10個數字組成的列表中,隨機生成10個8位密碼
import random l = [] for i in range( 10 ): l.append( i ) for i in range( ord('a') , ord('z') + 1 ): l.append( chr(i) ) for i in range( ord('A') , ord('Z') + 1 ): l.append( chr(i) ) passwds = [ '' , '' , '' ] for i in range(3): for j in range(8): passwds[ i ] += str( l[ random.randrange( len( l ) ) ] ) for passwd in passwds: print( passwd )
小作業5
1.通過程式碼實現如下轉換:
• 二進位制轉換成十進位制:v = “0b1111011”
int( v , 2 )
• 十進位制轉換成二進位制:v = 18
bin( v )
• 八進位制轉換成十進位制:v = “011”
int( '0o' + str[1:] , 8 )
• 十進位制轉換成八進位制:v = 30
oct( v )
• 十六進位制轉換成十進位制:v = “0x12”
int( v , 16 )
• 十進位制轉換成十六進位制:v = 87
hex( v )
3.求結果
v1 = 1 or 3 1
v2 = 1 and 3 3
v3 = 0 and 2 and 1 0
v4 = 0 and 2 or 1 1
v5 = 0 and 2 or 1 or 4 1
v6 = 0 or False and 1 False
7.求結果: a. [ i % 2 for i in range(10) ] b. ( i % 2 for i in range(10) )
a.[ 1,3,5,7,9 ]
b.( 1,3,5,7,9 )
8.求結果: a. 1 or 2 b. 1 and 2 c. 1 < (2==2) d. 1 < 2 == 2
a.1
b.2
c.False
d.False
小作業6
1.請寫出與 10 < cost < 50 等價的表示式
cost > 10 and cost < 15
2.Python3 中,一行可以書寫多個語句嗎?
Python3 中,一個語句可以分成多行書寫嗎?
一行可以輸入多條語句,用;(分號)隔開
一個語句可以分成多行書寫,需要在斷開的地方新增 \ 字元,表示這一行尚未結束。
3.我們人類思維是習慣於“四捨五入”法,你有什麼辦法使得 int() 按照“四捨五入”的方式取整嗎?
print( 'float-->int n : {}'.format( int( float( input( 'input float f : ' ) ) + 0.5 ) ) )
4.請用最快速度說出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or7 and 8 and 9
9
5.愛因斯坦曾出過這樣一道有趣的數學題:有一個長階梯,若每步上2階,最後剩1階;若每步上3階,最後剩2階;若每步上5階,最後剩4階;若每步上6階,最後剩5階;只有每步上7階,最後剛好一階也不剩。請程式設計求解該階梯至少有多少階?
i = 1 while True: if ( ( i%2 ) == 1 )and( ( i%3 ) == 2 )and( ( i%5 ) == 4 )and( ( i%6 ) == 5 )and( ( i%7 ) == 0 ): print( i ) break else: i += 1
6.假設有 x = 1,y = 2,z = 3,請問如何快速將三個變數的值互相交換?
x , y , z = z , x , y
7.目測以下程式會列印什麼?
while True:
while True:
break
print(1)
print(2)
break
else:
print(3)
會列印:2
8.member.append(['竹林小溪', 'Crazy迷戀']) 和member.extend(['竹林小溪', 'Crazy迷戀']) 實現的效果一樣嗎?
使用append,是將['竹林小溪', 'Crazy迷戀']看作一個物件,整體打包新增到member物件中,
即member中多了一個成員——['竹林小溪', 'Crazy迷戀']
使用extend,是將new_media看作一個序列,將這個序列和music_media序列合併,並放在其後面,
即member中多了兩個個成員——'竹林小溪' 、'Crazy迷戀'
9.請問如何將下邊這個列表的'小笨蛋'修改為'小壞蛋'?
list1 = [1, [1, 2,['小笨蛋']],3, 5, 8, 13, 18]
list1 = [1, [1, 2,['小笨蛋']],3, 5, 8, 13, 18] list1[1][2] = '小壞蛋'
10.要對一個列表進行順序排序,請問使用什麼方法?
list.sort()# 改變原列表
sorted( list )# 不改變原列表,返回值為排序後的列表
11.要對一個列表進行逆序排序,請問使用什麼方法?
list.sort( reserve = True )
12.什麼情況下你需要使用元組而不是列表?
當元組和列表掉下水,你會救誰?
當不希望內容被輕易改寫的時使用元組
救列表,因為元組在python中序列不可變
13.x, y, z = 1, 2, 3 請問x, y, z是元組嗎
不是
14.編寫一個進位制轉換程式(提示,十進位制轉換二進位制可以用bin()這個BIF):
print( '#進位制轉換#' ) def get_int( str ): flag = 10 if str[:2] == '0b': return [ 2 , int( str , 2 ) ] elif str[:2] == '0o': return [ 8 , int( str , 8 ) ] elif str[:2] == '0x': return [ 16 , int( str , 16 ) ] else: return [ 10 , int( str )] l = get_int( input( '請按進位制格式輸入 number = ' ) ) print( '二進位制 {}\n八進位制 {}\n十進位制 {}\n十六進位制{}'\ .format( bin( l[1] ) , oct( l[1] ) , l[1] , hex( l[1] ) ) )
15.我們根據列表、元祖和字串的共同特點,把它們三統稱為什麼?有什麼共性
統稱有序序列
共性:有序,可索引
18.猜字遊戲,隨機產生10以內的整型數,可供使用者猜,如果猜對,列印“厲害了!500萬屬於你”,如果猜錯,如果比隨機數大,提示,“大了,再給你一次機會”,如果比隨機數小,提示“大膽一點”。使用者最多有三次機會
import random print( '猜字遊戲' ) n = random.randrange( 10 ) i = 0 while i < 3: g = int( input('g = ') ) if g == i: print( '厲害了!500萬屬於你' ) break else : if i in [0,1]: print( '大了,再給你一次機會' if g > n else '大膽一點' ) else: print( '你輸了!!!' ) break i += 1
19.盒子裡有3個紅球,3個藍色球,4個黃球,現劉柱要從盒子裡拿出8個球,問有多少種情況
for r in [1,2,3]: for b in [1,2,3]: for y in [1,2,3,4]: print( 'red:{} blue:{} yellow:{}\n'.format(r,b,y) \ if r + b + y == 8 else '',end='' )
20.列印9 9乘法表
for i in range( 1 , 10 ): for j in range( 1 , i + 1 ): print( '{}*{}={}\t'.format( j , i , i * j ) , end = '') print()
21.猴子得到一堆桃,當天吃了一半之後,又多吃了1個。以後每天,猴子都吃了剩餘的一半桃子之後,又多吃一個。在第10天,只剩下1個桃子。輸出這堆桃最初有多少個
i = 1 for j in range( 10 ): i = ( i + 1 ) * 2 print( i )