1. 程式人生 > >20181207hw 小作業3 小作業4 小作業5 小作業6

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 )