第四に、共通のデータ構造演習と統合された場合

演習と統合された場合:

演習1:画面上のマーキー表示テキスト

演習2:生成機能指定された長さコードの設計、総額コードは、文字と数字で構成されています。

演習3:指定したファイル名の拡張子に戻るには、機能を設計します。

演習4:最大と二番目に大きい要素のリストで渡された関数の戻り値を設計します。

演習5:年の最初の数日間で指定した日付の計算

演習6:印刷パスカルの三角形を

演習7:計算された平均生徒のテストの点数を入力します。

演習8:Feibolaqieを生成された列の数

練習9:最大または最小の要素のリストを表示して下さい

練習10:生徒のテストの点数表

ケース1:色のボールを選択

統合されたケース2:ヨセフス問題

統合されたケース3:三目並べゲーム

 

回答:

演習1:

「」「
マーキー
」「」
インポートのOS 
インポート時


DEFメイン():
    コンテンツは=「北京はあなたの訪問のためにあなたを歓迎します............」
    しばらく真:
        画面#のクリーンアップに出力
        os.system(「はCLS」)#OSの.system( 'クリア')
        プリント(コンテンツ)
        #200 MSがスリープ
        time.sleepを(0.2)
        コンテンツ配信= [1:] +コンテンツ[0] 


IF __name__ == '__main__':
    メイン()

  

"" " 
成绩页面跑马灯
""" 

インポートのOS 
インポート時間

DEFメイン():
    STR = '1000の電話成都キャンパスへようこそ' 
    :真ながら
        プリント(STR)
        time.sleep(0.2)
        STR = STR [1] + STR [0:1] 
        Windows用の#は( 'はCLS')を代わりにos.systemを使用
        os.system( '明らか') 

もし__name__ == '__main__' 
    メイン()

  

演習2:

「」「
大文字と小文字と数字からなるコードを指定された長さのコードを生成
「」」
インポートランダム


DEFのgenerate_codeを(= code_len 4):
    「」 " 
    指定された長さのコードを生成する

    :PARAM code_len:の長さコード(デフォルト4文字)

    :リターン:小文字と数字のランダムコード
    "" " 
    all_charsの= '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' 
    last_pos = LEN(all_chars) - 1つの。
    コード= '' 
    の範囲内の(code_len _用):
        インデックス= random.randint(0、last_pos)
        コードall_chars + = [インデックス] 
    戻りコード

  

演習3:

「」「
拡張子指定したファイル名に戻る
」「」
DEF get_suffix(ファイル名、偽has_dot =):
    「」 " 
    ファイル名の拡張子を取得する

    :のparamファイル名:ファイル名
    :のparam has_dotは:の必要性と接尾辞を返します。点
    :リターン:ファイル拡張子
    "" " 
    POS = filename.rfind( '')
    IF 0 <POS <LEN(ファイル名):1 - 。 率= + POS POS 1 IF has_dot他の
        リターンファイル名[度:] 
    他:
        リターン「」

  

演習4:

"" " 
リストが最大値と二番目に大きい要素渡さ返し
""" 
DEF MAX2(X):
    ([1] X [0]は、Xの)M1、M2 =をX [0]> X [IF 1]他(Xの[1]、X [0])
    の範囲のインデックス(2、LEN(X))のために:
        IF X [インデックス]> M1:
            M2 = M1 
            M1 = X [インデックス] 
        のelif X [インデックス]> M2:
            M2 = Xの[インデックス]は
    M1、M2を返します

私はそれを自分で書いて、私はもっとシンプルな感じ

DEF MAXNUM(X):
    LIST1 = X 
    maxfirst = MAX(LIST1)
    list1.pop()
    maxsecond = MAX(LIST1)
    maxfirst戻り、maxsecond 

リスト= [1,2,3,4,5,6] 
NUM = MAXNUM(リスト)
プリント(NUM)

  

 

 

演習5:

「」「
日付は今年の最初の数日で計算します
。」「」
DEF is_leap_year(年):
    「」 " 
    指定された裁判官の年はうるう年ではありません

    :PARAM年:年
    :リターン:うるう年うるう年はTrueとFalseを返します
    「」「
    リターン年と年%4 == 0 = 0%100%400 == 0または年!


DEFのwhich_day(年、月、日):
    」「」
    計算日は、今年の最初の数日間に渡されます

    :のparam年:年
    :のparam月:1月
    :のparam日:5月
    :リターン:最初の数日
    "" " 
    DAYS_OF_MONTH = [ 
        [31、28、31、30、31、30、31、31、30、31、30、 31]、
        [31、29、31、30、31、30、31、31、30、31、30、31] 
    ] [is_leap_year(年)] 
    の合計= 0
    範囲のインデックス(月- 1)の場合:
        合計+ = DAYS_OF_MONTH [インデックス] 
    の合計+日付を返す


)(DEF主:
    プリント(which_day(1980、11、28))
    プリント(which_day(1981、12、31))
    プリント(which_day(2018、1、1))
    印刷(which_day(2016、3、1))


なら__name__ == '__main__':
    メイン()

  

演習6:

"" " 
出力線10パスカルの三角形- n乗の二項膨張係数
。1 
。1 1 
1 2 1 
。1. 3. 3. 1 
。1. 1. 4. 4 6 
... ... ... 
" "" 


DEFメイン() :
    NUM = INT(INPUT( '行のナンバー:'))
    YH = [] * NUM 
    範囲内の行のための(LEN(YH)):
        YH [行] = [なし] *(行+ 1)
        COL用範囲(LEN(YH [行])):
            COL IF又はCOL 0 == ==行:
                YH [行] [COL] = 1。
            他:
                YH [行] [COL] = YH [ロウ- 1] [COL ] + YH [行- 1] [COL - 1]。
            プリント(YH [行] [COL]、エンド= '\ T')
        を印刷()


__name__ == '__main__' IF:
    メイン()

  

演習7:

「」「
平均を計算するために生徒のテストの点数を入力してください
」「」

DEFメイン():
    数= INT(INPUT(「学生の数を入力してください:」))
    名前= [なし] *数値
    スコア= [なし] *ナンバー
    のインデックスのためにレンジ(LEN(名)):
        名前[インデックス] =入力( '%dは生徒の名前を入力してください:' %(インデックス+ 1))
        スコア[インデックス]はフロートを=(入力(「入力%D。学生の成績: '%(。+インデックス1)))
    の合計= 0 
    の範囲(LEN(名前)のインデックス用):
        印刷(' %のS:%.1f分%(名前[インデックス]、スコア[インデックス]) 
        合計スコア+ = [インデックス] 
    プリント(「平均スコアは:%.1f分%(合計/番号))


__name__ == '__main__' IF:
    メイン()

 

演習8:

"" " 
生成斐波拉切数列
""" 


)(メインDEF:
    [1、1] = F 
    Iの範囲内の(2、20)のための:
        [I F F + = [ - 1] + F [I - 2 ] 
        (2] [I F - - 1] + F [I)#1 f.append 
    :Fでヴァルのための
        プリント(ヴァル、端=」「)


なら__name__ == '__main__':
    メイン()

  

練習9:

「」「
リスト要素の最大値や最小値を探す
」「」


DEFメイン():
    フルーツ= [「ブドウ」、「アップル」、「イチゴ」、「Waxberryで」、「ピタヤ」] 
    構築されており、直接使用する#最大min関数は、リストの要素の最大値と最小発見
    #プリント(MAX(果実)) プリント(MIN(果実))
    MAX_VALUE = MIN_VALUE =を果実[0] 
    の範囲のインデックス(1、LEN(フルーツ)。):
        果物[IFインデックス]> MAX_VALUE:
            MAX_VALUE =フルーツ[インデックス] 
        ELIFフルーツ[インデックス] <MIN_VALUE:
            MIN_VALUEフルーツ= [インデックス] 
    プリント( 'マックス:'、MAX_VALUE)
    プリント( '最小:'、MIN_VALUE)


__name__ == '__main__' IF :
    メイン() あなたが最大の要素が行う方法を見つけるために2つを持っていると思う場合は二番目に大きいはず

 

練習10:

"" " 
スチューデントテストの点数テーブル
。" "" 


)(メインDEF:
    名= [ '関'、 '張'、 '趙'、 '馬超'、 '黄'] 
    subjs = [ '言語'、 '数学' '英語'] 
    スコア= [[0] * 3] * 5。。
    行のため、列挙(名前)で名前:
        印刷(%名'%sのスコアを入力してください')
        列挙(subjs)でSUBJのCOLのため、:
            スコア[行] [COL]はフロート( '')SUBJ +の入力()= 
    プリント(スコア)
列挙(名前)の行のための#名:
#プリント(%名'%sのスコアを入力') スコアを[行] = [なし] * LEN(subjs)
COLため#、列挙内のSUBJ(subjs): スコア=フロート((+ SUBJのINPUT ':')) 
#スコア[行] [COL] =スコア
#プリント(スコア)

もし__name__ == '__main__':
    メイン()

  

ケース1:

「」「
色のボールがランダムプログラムを選択
。」「」

ランダム読み込みrandrange、randintから、サンプルは


DEFディスプレイ(ボール)を実行します。
    「「」
    2色番号に出力リストを
    。」「」
    インデックスの場合は、ボールを列挙(ボール)に:
        IFインデックス== LEN(ボール) - 1:
            印刷( '|'、エンド= '')
        を印刷( '%02D' %のボール、エンド= '')
    を印刷()


DEFのrandom_selectは():
    " "" 
    ランダムに数字のグループを選択し
    、 "" 「
    red_balls = [範囲でXのX(1、34である。)] 
    selected_balls = [] 
    の範囲で_(6):
        インデックス= randrange(LEN(red_balls))
        selected_balls。追加(red_balls [インデックス]) 
        デルred_balls [インデックス]追記(red_balls [インデックス]) 
    のコード行上記ループの#は、以下のように書くことができます。
    ランダム関数の#サンプルは、機能モジュールである
    #selected_balls =サンプル(red_balls ,. 6)
    selected_balls.sort()
    selected_balls.append(randint(1、16)。)
    リターンselected_balls 


DEFメイン():
    から選択されたn-INT =(INPUT(「ユニットいくつかの注意: '))
    用_レンジ(N)中:
        ディスプレイ(random_select())


IF __name__ ==' __main__「:
    メイン()

  

ケース2:

「」「
」ラッキーキリスト教徒」
15人のキリスト教徒と15非キリスト教徒が海で遭難してありますが、一部の人々が内部に行くために海に15人の中で生き残るために持っていたことを可能にするために、誰かがある方法を考え私たちはその後、数が1から始まることを報告した彼の後ろの内側の海に新聞の番号から誰かによって始まった円、9人の報告書を、形成され、9人は15まで投げ、内部海に報告し続けます神が禁じているため、個人、15人のクリスチャンはこれらの人々のほとんどはキリスト教の非キリスト教徒の位置である位置、どの駅を尋ねるようになった、生き残ってきた。 
「」" 


DEFメイン():
    名= [真] 30 * 
    カウンタ、インデックス数= 0、0、0 
    、一方カウンタ<15:
        IF人[インデックス]:
            数+ = 1。
            ==番号9 IF:
                人[索引] = FALSE 
                。カウンタ+ 1 = 
                番号0 = 
        指数+ = 。1 
        = 30%、インデックス
    の人で人用:
        印刷(「ベース」であれば、人他に「非」、エンド=「」) 


もし__name__ == '__main__':
    メイン()

  

ケース3:

"" " 
井字棋游戏
""" 

輸入OS 



デフprint_board(ボード):
    プリント(ボード[ 'TL'] + '|' +ボード[ 'TM'] + '|' +ボード[ 'TR'])
    印刷( ' - + - + - ')
    プリント(ボード[ 'ML'] + '|' +ボード[ 'MM'] + '|' +ボードの[ 'MR'])
    印刷( ' - + - + - ')
    プリント(基板[ 'BL'] + '|' +ボード[ 'BM'] + '|' +ボード[ 'BR'])


DEFメイン():
    init_board = { 
        'TL': ''、 'TM': ''、 'TR': ''、
        'ML': ''、 'MM': ''、 'MR': ''、
        'BL': ''、 'BM ':'」、 'BR' '' 
    } 
    真=始める
    一方が開始:
        curr_board = init_board.copy()は
        = Falseの開始
        ターン= 'X' 
        カウンタ= 0を
        os.system( 'クリア')
        print_board(curr_board)
        中にカウンタ<9:
            移動=入力( '轮到%の走棋、请输入位置:' %ターン)
            curr_board [移動]場合==「:
                カウンター+ = 1 
                curr_board [移動] =ターン
                ターン場合== 'X':
                    ターン= 'O' 
                他:
                    オン= 'X' 
            os.system( '明らか')
            print_board(curr_board)
        の選択=入力( '再玩一局(?をYES | NO) ')
        =選択を開始していない== 'yes'に


ある場合__name__ == '__main__':
    メイン()

  

おすすめ

転載: www.cnblogs.com/jieperhaps/p/11429440.html