乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      【Python基礎(chǔ)語法】參考 卡西

       deerwjj 2019-02-20

      第0關(guān)

      練習(xí)1-打印皮卡丘-參考

      請(qǐng)你使用**print()函數(shù)**和**'''**將下面的皮卡丘打印出來。皮卡丘字符畫可以直接復(fù)制步驟1里的。

      ```

      へ    ?。瘄

        /\7    ∠_/

        / │   / /

       │ Z _,<?。 ?/`ヽ

       │     ヽ   /  〉

        Y     `  /  /

       ?● ? ●  ??〈  /

       ()  へ    |?。堋?/p>

        >? ?_  ?!?│ //

        / へ   / ?<| \\

        ヽ_?  (_/  │//

        7       |/

       ?。鲸Dr ̄ ̄`?―_

      ```

      題目講解

      1.復(fù)制題目要求打印的“皮卡丘”(直接復(fù)制下一步中的字符畫即可)

      2. 用print(''' ''')打印

      **注意:標(biāo)點(diǎn)符號(hào)都要用英文**


      【參考】

      print('''
          へ     /|
        /\7    ∠_/
        / │   /?。?/div>
       │ Z _,<?。 ?/`ヽ
       │     ヽ   /  〉
        Y     `  /  /
       ?● ? ●  ??〈  /
       ()  へ    |?。堋?/div>
        >? ?_  ?!?│ //
        / へ   / ?<| \\
        ヽ_?  (_/  │//
        7       |/
       ?。鲸Dr ̄ ̄`?―_
      ''')


      練習(xí)2-聽見無臉男的聲音-參考

      題目要求:

      在千尋進(jìn)入魔法世界的期間,有一位“無臉男”一直跟在她的身邊。一開始,千尋對(duì)無臉男的跟蹤感到害怕,直到她第一次聽見了無臉男對(duì)她說的話后,才理解了他,并和他成為了朋友。


      【講解】

      下面是無臉男對(duì)千尋說的話,請(qǐng)你把這段話打印出來,并且使用**轉(zhuǎn)義字符**,把無臉男說的話按照正確格式打印:

      千尋你好,人們叫我'無臉男'

      這個(gè)世界的人都選擇無視我

      只有你看到了我并和我打招呼

      我感到很孤單,很孤單

      你愿意和我成為朋友嗎?


      題目講解

      1.復(fù)制下面這段無臉男對(duì)千尋說的話:

      千尋你好,人們叫我'無臉男' 這個(gè)世界的人都選擇無視我 只有你看到了我并和我打招呼 我感到很孤單,很孤單 你愿意和我成為朋友嗎?

      2.提示:文本中有引號(hào)的地方需要用到轉(zhuǎn)義字符 \' ;需要換行的地方用 \n


      【參考】

      print('千尋你好,人們叫我'無臉男'\n這個(gè)世界的人都選擇無視我\n只有你看到了我并和我打招呼\n我感到很孤單,很孤單\n你愿意和我成為朋友嗎?')



      第1關(guān)

      練習(xí)1-程序員的一人飲酒醉-參考

      題目要求

      在Python的魔法世界,最常用的數(shù)據(jù)類型有三種:字符串(str)、整數(shù)(int)和浮點(diǎn)數(shù)(float)。

      在**數(shù)據(jù)拼接**中,為了將不同的信息進(jìn)行整合,可以使用**拼接符號(hào)**。但是,如果數(shù)據(jù)非字符串類型,則無法進(jìn)行拼接。

      此時(shí),我們可以使用數(shù)據(jù)轉(zhuǎn)換函數(shù)**str()**,將數(shù)據(jù)轉(zhuǎn)換為字符串類型后,再進(jìn)行拼接。


      【講解】

      請(qǐng)運(yùn)用下方變量,使用str()函數(shù)打印兩句話。

      第一句話:1人我編程累碎掉的節(jié)操滿地堆

      第二句話:2眼是bug相隨我只求今日能早歸

      可使用變量:

      number1 = 1,number2 = 2

      unit1 = '人',unit2 = '眼'

      line1 = '我編程累',line2 = '是bug相隨'

      sentence1 = '碎掉的節(jié)操滿地堆',sentence2 = '我只求今日能早歸'


      題目講解

      1.將非字符串型變量轉(zhuǎn)換為字符串類型

      2.將字符串類變量拼接在一起


      【講解】

      1.使用str()函數(shù)

      2.使用拼接符號(hào)** **

      3.使用print()函數(shù)


      【參考】

      number1  = 1
      number2 = 2
      unit1 = '人'
      unit2 = '眼'
      line1 = '我編程累'
      line2 = '是bug相隨'
      sentence1 = '碎掉的節(jié)操滿地堆'
      sentence2 = '我只求今日能早歸'
      first = str(number1) unit1 line1 sentence1
      second = str(number2) unit2 line2 sentence2
      print(first)
      print(second)


      練習(xí)2-非酋的吐槽-參考

      題目要求

      在**數(shù)據(jù)拼接**中,為了將不同的信息進(jìn)行整合,可以使用**拼接符號(hào)**。但是,如果數(shù)據(jù)非字符串類型,則無法進(jìn)行拼接。此時(shí),我們可以使用數(shù)據(jù)轉(zhuǎn)換函數(shù)**str()**,將數(shù)據(jù)轉(zhuǎn)換為字符串類型后,再進(jìn)行拼接。但是有的時(shí)候,針對(duì)不同類型的數(shù)據(jù),我們需要經(jīng)歷多次轉(zhuǎn)換,最后才能轉(zhuǎn)為字符串類型。


      【講解】

      請(qǐng)使用**轉(zhuǎn)換函數(shù)**str()、int()、float(),運(yùn)用下方變量,使用數(shù)據(jù)轉(zhuǎn)換及數(shù)據(jù)拼接,輸出結(jié)果: 臉黑怪我咯7張藍(lán)票一個(gè)SSR都沒有

      可使用變量:

      slogan = '臉黑怪我咯',number = '7.8',unit = '張',sentence = '藍(lán)票一個(gè)SSR都沒有'


      題目講解

      1.由于變量中與小數(shù)形式的字符串,所以需要使用轉(zhuǎn)換函數(shù)將此變量轉(zhuǎn)換為浮點(diǎn)型

      2.轉(zhuǎn)換后使用int()函數(shù)取整

      3.由于數(shù)據(jù)拼接需要變量為字符串形式,所以需要將變量轉(zhuǎn)化為字符串類型

      4.最后數(shù)據(jù)拼接,得出結(jié)果


      【講解】

      - 使用float()函數(shù)將小數(shù)形式的字符串變量轉(zhuǎn)換

      - 使用int()函數(shù)取整

      - 使用str()函數(shù)將數(shù)據(jù)轉(zhuǎn)換為字符串形式

      - 使用** **進(jìn)行數(shù)據(jù)拼接


      【參考】

      slogan = '臉黑怪我咯'
      number = '7.8'
      unit = '張'
      sentence = '藍(lán)票一個(gè)SSR都沒有'
      word = slogan str(int(float(number))) sentence
      print(word)



      第2關(guān)

      練習(xí)1-偷回寶石-參考

      題目要求

      在滅霸打了一個(gè)響指,宇宙一半生物都灰飛煙滅后,剩下的復(fù)仇者聯(lián)盟成員們?cè)诰薮蟮膭?chuàng)傷之中,依舊沒有放棄反擊滅霸的機(jī)會(huì),他們決定利用最后一次行動(dòng)機(jī)會(huì),去把滅霸手里的寶石偷回來。最終,他們因?yàn)閷?shí)力相差太大,1顆寶石都沒有偷回來。


      【講解】

      請(qǐng)你寫出一段代碼:

      如果偷回的寶石數(shù)是4顆及以上,輸出結(jié)果“獲得了打敗滅霸的力量,反殺穩(wěn)了”

      如果偷回的寶石數(shù)是1-3顆,輸出結(jié)果“可以全員出動(dòng),殊死一搏”

      如果偷回的寶石數(shù)是0顆,輸出結(jié)果“沒辦法了,只能嘗試呼叫驚奇隊(duì)長”

      注意:標(biāo)點(diǎn)符號(hào)都為英文格式


      題目講解

      1.為變量【賦值】,寫出“一個(gè)寶石都沒偷回來”的情況

      2.用【if】寫第一個(gè)條件:如果偷回的寶石數(shù)是4顆及以上,輸出結(jié)果:獲得了打敗滅霸的力量,反殺穩(wěn)了

      3.用【elif】寫第二個(gè)條件:如果偷回的寶石數(shù)是1-3顆,輸出結(jié)果:可以全員出動(dòng),殊死一搏

      4.用【else】寫第三個(gè)條件:如果偷回的寶石數(shù)是0顆,輸出結(jié)果:沒辦法了,只能嘗試呼叫驚奇隊(duì)長


      【參考】

      #以下為答案示例(stonenumber=0/1/2/3/4/5/6都是對(duì)的)
      stonenumber=5
      #偷回寶石數(shù)量賦值
      if stonenumber >= 4:
          #條件:如果你擁有的寶石數(shù)量大于等于4個(gè)
          print('獲取打敗滅霸的力量')
          #結(jié)果:顯示‘獲取打敗滅霸的力量’的結(jié)果 
      elif 1 < stonenumber <= 3:
          #條件:如果想讓寶石數(shù)量停留在45個(gè)
          print('可以全員出動(dòng),殊死一搏')
           #結(jié)果:顯示‘可以全員出動(dòng),殊死一搏’的結(jié)果   
      else:
          #條件:當(dāng)賦值不滿足if和elif條件時(shí),執(zhí)行else下的命令,寶石數(shù)量在3個(gè)以下
          print('沒辦法了,只能嘗試呼叫驚奇隊(duì)長')
          #結(jié)果:顯示‘沒辦法了,只能嘗試呼叫驚奇隊(duì)長’的結(jié)果


      練習(xí)2-美國隊(duì)長的工資-參考

      題目要求

      復(fù)仇者聯(lián)盟的成員也是有工資的,然而,由于美國隊(duì)長一直被冰封在北極,錯(cuò)過了多次調(diào)薪機(jī)會(huì),所以美國隊(duì)長的工資一直是每月80美元。光榮挺進(jìn)史塔克窮人榜前三名,并獲封“美元隊(duì)長”稱號(hào)。


      【講解】

      請(qǐng)你寫出一段代碼,判斷美國隊(duì)長的工資水平,代碼需要滿足如下條件:

      如果月工資小于等于500美元,顯示“歡迎進(jìn)入史塔克窮人幫前三名”

      如果月工資在100-500美元之間,顯示“請(qǐng)找弗瑞隊(duì)長加薪”

      如果月工資小于等于100美元,顯示“恭喜您榮獲“美元隊(duì)長”稱號(hào)!”

      如果月工資在500-1000美元之間(含1000美元),打印“祝賀您至少可以溫飽了?!?/p>

      其他情況下,如果工資大于1000美元,打印“經(jīng)濟(jì)危機(jī)都難不倒您!”

      如果工資在1000-20000美元(含20000美元)之間,打印“您快比鋼鐵俠有錢了!”

      如果月工資大于20000美元,打印“您是不是來自于瓦坎達(dá)國?”

      不管賦值改變后輸出結(jié)果如何,都需固定打印“程序結(jié)束”


      題目講解

      1.根據(jù)題目,我們知道這里涉及嵌套條件,所以可以用扒洋蔥法梳理代碼邏輯

      2.根據(jù)要求,先寫最外層的**if……elif……else……**條件

      3.根據(jù)題目的從屬關(guān)系分析,最外層的**if**條件和**else**條件都有額外條件

      4.依次在外層基礎(chǔ)條件下添加額外條件


      【講解】

      1.使用if條件嵌套

      2.嵌套條件需要縮進(jìn)

      3.注意單雙引號(hào)同時(shí)存在時(shí)的互相轉(zhuǎn)換

      4.通過錢數(shù)輸出對(duì)應(yīng)的結(jié)果


      【參考】

      #以下為答案示例(salary為多少都是對(duì)的)
      salary = 200
      #對(duì)美國隊(duì)長的工資賦值
      if salary <= 500:
          #條件:如果工資小于等于500
          print('歡迎進(jìn)入史塔克窮人幫前三名')
          #結(jié)果:顯示‘歡迎進(jìn)入史塔克窮人幫前三名’的結(jié)果 
          if salary <= 100:
              #條件:如果工資小于等于100
              print('恭喜您榮獲“美元隊(duì)長”稱號(hào)!')
              #結(jié)果:顯示‘恭喜您榮獲“美元隊(duì)長”稱號(hào)!’的結(jié)果 
          else:
              #條件:當(dāng)條件滿足第4if,不滿足第8if,執(zhí)行這個(gè)命令
              print('請(qǐng)找弗瑞隊(duì)長加薪')
              #結(jié)果:顯示‘請(qǐng)找弗瑞隊(duì)長加薪’的結(jié)果 
      elif 500 < salary <= 1000:
          #條件:如果工資大于500,小于等于1000
          print('祝賀您至少可以溫飽了。')
           #結(jié)果:顯示‘祝賀您至少可以溫飽了。’的結(jié)果 
      elif salary > 1000:
          #條件:如果工資大于1000
          print('經(jīng)濟(jì)危機(jī)都難不倒您!')
          #結(jié)果:顯示‘經(jīng)濟(jì)危機(jī)都難不倒您!’的結(jié)果 
          if 1000 < salary <= 20000:
              #條件:如果工資大于1000,小于等于20000
              print('您快比鋼鐵俠有錢了!')
              #結(jié)果:顯示‘您快比鋼鐵俠有錢了!’的結(jié)果    
          else:
              #條件:滿足第20行elif條件,不滿足第24if條件,則執(zhí)行這個(gè)命令
              print('您是不是來自于瓦坎達(dá)國?')
              #結(jié)果:顯示‘您是不是來自于瓦坎達(dá)國?’的結(jié)果
      print('程序結(jié)束')



      第3關(guān)

      練習(xí)1-哈利波特的寵物-參考

      題目要求

      哈利·波特在對(duì)角巷購買寵物時(shí)犯難了,他不知道該給自己的貓頭鷹起什么名字?,F(xiàn)在請(qǐng)你幫助哈利·波特,為他的貓頭鷹起一個(gè)名字。


      【講解】

      請(qǐng)你寫一段代碼:

      為哈利·波特的貓頭鷹起個(gè)名字,并打印出結(jié)果【哈利·波特的貓頭鷹叫做XX】(XX是你起的名字)。


      題目講解

      1.搜集貓頭鷹的名字(知識(shí)點(diǎn):input(),賦值)

      2.打印結(jié)果【哈利·波特的貓頭鷹叫做XX】(XX是你取的名字)(知識(shí)點(diǎn):數(shù)據(jù)拼接)


      【參考】

      name = input('為哈利·波特的貓頭鷹起個(gè)名字:')
      print('哈利·波特的貓頭鷹叫做' name)



      練習(xí)2-羅恩的減肥計(jì)劃-參考

      題目要求

      為了三強(qiáng)爭(zhēng)霸賽的舞會(huì),羅恩想要減肥,所以他決定控制自己的飲食,少吃一點(diǎn)巧克力蛙。

      哈利為了幫助好朋友羅恩,和他一起制定了一個(gè)飲食游戲。

      游戲規(guī)則如下:

      如果羅恩一天吃超過10個(gè)巧克力蛙,羅恩要給哈利100塊;

      如果羅恩一天吃小于等于10個(gè)的巧克力蛙,哈利就給羅恩100塊。


      【講解】

      請(qǐng)你寫出一段代碼:

      當(dāng)隨機(jī)輸入羅恩一天吃的巧克力蛙數(shù)量時(shí),可以判斷出這天,是羅恩給哈利錢,還是哈利給羅恩錢,并打印出來。


      題目講解

      1.搜集羅恩吃的巧克力數(shù)量(知識(shí)點(diǎn):input()、數(shù)據(jù)轉(zhuǎn)換)

      2.寫第一個(gè)條件:如果羅恩一天吃超過10個(gè)巧克力蛙,羅恩要給哈利100塊;

      3.寫第二個(gè)條件:如果羅恩一天吃小于等于10個(gè)的巧克力蛙,哈利就給羅恩100塊。

      (知識(shí)點(diǎn):if...else...)


      【參考】

      number = int(input('請(qǐng)輸入羅恩吃的巧克力數(shù)量:'))
      #int將其轉(zhuǎn)換為整數(shù),之后好進(jìn)行大小的比較
      if number > 10:
          print('羅恩要給哈利100塊')
      else:
          print('哈利就給羅恩100塊')



      練習(xí)3-古靈閣金幣兌換-參考

      題目要求

      接受了霍格沃茨來信的你,帶著欣喜與好奇,跟著魔咒學(xué)老師吳楓教授,來到了巫師世界的對(duì)角巷。在這個(gè)相當(dāng)于人類集市的對(duì)角巷,你立刻被魔法世界稀奇古怪的東西吸引,想掏手機(jī)刷花唄買買買。但是吳楓教授說,麻瓜(沒有魔法的人)貨幣在魔法世界不流通,但是你可以去巫師世界的銀行——古靈閣兌換貨幣。你立刻跟著吳楓老師跑到了古靈閣。當(dāng)你進(jìn)到巫師世界的銀行時(shí),就有銀行的小精靈職員問好:


      **注意:以下背景與題目要求相關(guān)**

      小精靈:您好,歡迎古靈閣,請(qǐng)問您需要幫助嗎?需要or不需要?

      你:需要

      小精靈:請(qǐng)問您需要什么幫助呢?1 存取款;2 貨幣兌換;3 咨詢

      你:2

      小精靈:金加隆和人民幣的兌換率為1:51.3,即一金加隆=51.3人民幣

      小精靈:請(qǐng)問您需要兌換多少金加隆呢?

      (你說了一個(gè)數(shù)字)

      小精靈:好的,我知道了,您需要兌換(你剛說的數(shù)字)金加隆。

      小精靈:那么,您需要付給我(將你剛說的數(shù)字轉(zhuǎn)換為金加隆的數(shù)字)人民幣。


      注1:如果選擇不需要幫助,小精靈會(huì)禮貌地說'好的,再見。'

      注2: 如果選擇幫助【1 存取款】,小精靈會(huì)推薦你去存取款窗口;如果選擇幫助【3 咨詢】,小精靈會(huì)推薦你去咨詢窗口。


      題目講解

      和小精靈的對(duì)話可以被這么拆分:

      1.最基礎(chǔ)的條件判斷:需要幫助;不需要幫助(if...else...)

      2.在需要幫助的情況下,又分為1存取款;2貨幣兌換;3咨詢;三種情況。(if...elif...else...)

      3.在2-貨幣兌換的情況下,需要再提一個(gè)問題,收集答案,打印出小精靈回答的結(jié)果(input()、數(shù)據(jù)拼接、數(shù)據(jù)轉(zhuǎn)換)。


      【參考】

      chioce = input('您好,歡迎古靈閣,請(qǐng)問需要幫助嗎?需要or不需要?')
      if chioce == '需要':
          number = input('請(qǐng)問您需要什么幫助呢?1 存取款;2 貨幣兌換;3 咨詢')
          if number == '2':
              print('金加隆和人民幣的兌換率為1:51.3,即一金加隆=51.3人民幣')
              print('請(qǐng)問您需要兌換多少金加隆呢?')
              money = input('請(qǐng)輸入你需要兌換的金加隆')
              print('好的,我知道了,您需要兌換' money '金加隆。')
              print('那么,您需要付給我' str(int(money)*51.3) '人民幣。')
          elif number == '1':
              print('請(qǐng)到存取款窗口辦理')
          elif number == '3':
              print('請(qǐng)到咨詢窗口咨詢')
          else:
              print('輸入錯(cuò)誤,沒有你需要的服務(wù)')

      elif chioce == '不需要':
          print('好的,再見')

      else:
          print('輸入錯(cuò)誤')



      第4關(guān)

      練習(xí)1-君子愛‘?dāng)?shù)’取之有道-參考

      題目講解

      第一步:取出列表中的第三個(gè)元素(list1[2]),字典{'愛':'love'}

      第二步:取出list1[2]中鍵'愛'所對(duì)應(yīng)的值,即'love’(list1[2]['愛'])


      【參考】

      list1 = [{'嫉妒':'envy'},{'恨':'hatred'},{'愛':'love'}]
      print(list1[2]['愛'])


      題目講解

      第一步:取出字典中鍵為3對(duì)應(yīng)的值(dict1[3]),即['love','hatred','envy']

      第二步:再取出列表['love','hatred','envy']中的第一個(gè)元素(dict1[3][0])


      【參考】

      dict1 = {1:['cake','scone','puff'],2:['London','Bristol','Bath'],3:['love','hatred','envy']}
      print(dict1[3][0])


      題目講解

      第一步:元組和列表都是序列,提取的方式也是偏移量,如 tuple1[1]、tuple1[1:]。

      第二步:先取出列表中的第二個(gè)元素中的(list2[1])

      第三步:然后在第二個(gè)元素的基礎(chǔ)上在去取值,即list2[1][1]

      注:(元組和列表的取值方式是相同的)


      【參考】

      tuple1 = ('A','B')
      list2 = [('A','B'),('C','D'),('E','F')]

      print(tuple1[0])
      print(list2[1][1])




      第5關(guān)

      練習(xí)1-數(shù)數(shù)字-參考

      題目講解

      小美想知道你是怎么用 for循環(huán) 的,在下方寫下你的代碼吧~

      小美還想知道你是怎么用 while循環(huán) 的,在下方寫下你的代碼吧~

      【參考】

      # while 循環(huán)
      n = 0
      while n < 7:
      n = n 1
      if n != 4: # 當(dāng)num != 4,執(zhí)行打印語句;等于4時(shí)不打印。
      print(n)


      # for 循環(huán)
      for num in range(1,8): # 為同時(shí)能運(yùn)行兩個(gè)循環(huán),新取參數(shù) num。
      if num != 4: # 當(dāng)num != 4,執(zhí)行打印語句;等于4時(shí)不打印。
      print(num)


      、

      第6關(guān)

      練習(xí)1-囚徒困境-參考

      【講解】

      1.開啟循環(huán),兩人分別選擇

      首先,我們需要知道兩個(gè)囚徒各自的選擇(input*2)。


      2.循環(huán)當(dāng)中,有判斷和跳出

      兩個(gè)囚徒的選擇,會(huì)有四種不同的結(jié)果。所以,可以用'if...elif...else'。

      判決提示:

      若兩人都認(rèn)罪,則兩人各判10年;

      若一個(gè)認(rèn)罪一個(gè)抵賴,則認(rèn)罪的人判1年,抵賴的人判20年;

      若兩人都抵賴,則各判3年——這種情況下跳出循環(huán)。


      【參考】

      while True:
      a = input('A,你認(rèn)罪嗎?請(qǐng)回答認(rèn)罪或者不認(rèn)')
      b = input('B,你認(rèn)罪嗎?請(qǐng)回答認(rèn)罪或者不認(rèn)')


      while True:
      a = input('A,你認(rèn)罪嗎?請(qǐng)回答認(rèn)罪或者不認(rèn)')
      b = input('B,你認(rèn)罪嗎?請(qǐng)回答認(rèn)罪或者不認(rèn)')
      if a == '認(rèn)罪' and b == '認(rèn)罪':
      print('兩人都得判10年,唉')
      elif a == '不認(rèn)' and b == '認(rèn)罪':
      print('A判20年,B判1年,唉')
      elif a == '認(rèn)罪' and b == '不認(rèn)':
      print('A判1年,B判20年')
      else:
      print('都判3年,太棒了')
      break # 當(dāng)滿足開頭提到的條件時(shí),跳出循環(huán)。



      第7關(guān)

      練習(xí)1-再來一盤-參考

      【講解】

      要達(dá)成目標(biāo),有兩種方案:

      1.while True break:

      開啟一個(gè)無限循環(huán),設(shè)定跳出條件。

      當(dāng)?shù)玫娇隙ɑ貜?fù)時(shí),繼續(xù)運(yùn)行;當(dāng)?shù)玫椒穸ɑ貜?fù)時(shí),運(yùn)行break,停止循環(huán),退出游戲。


      2.while 變量名 變量名的布爾值判斷:

      在開頭設(shè)某變量的布爾值為True,input后開啟判斷變量的布爾值是否改變。

      當(dāng)?shù)玫娇隙ɑ貜?fù)時(shí),while True,繼續(xù)運(yùn)行;當(dāng)?shù)玫椒穸ɑ貜?fù)時(shí),while False,停止循環(huán),退出游戲。下面,我們先用較簡單的代碼來體會(huì)一下這兩種方案。


      方案1:while True break

      開啟一個(gè)無限循環(huán),設(shè)定跳出條件。

      當(dāng)?shù)玫娇隙ɑ貜?fù)時(shí),繼續(xù)運(yùn)行;當(dāng)?shù)玫椒穸ɑ貜?fù)時(shí),運(yùn)行break,停止循環(huán),退出游戲。


      方案2:while 變量名 變量名的布爾值判斷

      在開頭設(shè)某變量的布爾值為True,input后開啟判斷變量的布爾值是否改變。

      當(dāng)?shù)玫娇隙ɑ貜?fù)時(shí),while True,繼續(xù)運(yùn)行;當(dāng)?shù)玫椒穸ɑ貜?fù)時(shí),while False,停止循環(huán),退出游戲。


      # 方案1
      while True:
      a1 = input('要繼續(xù)游戲嗎,請(qǐng)輸入n退出,輸入其他繼續(xù):')
      if a1 == 'n':
      break

      # 方案2
      again = True
      while again:
      a2 = input('要繼續(xù)游戲嗎,請(qǐng)輸入y繼續(xù),輸入其他退出:')
      if a2 == 'y':
      again = True
      else:
      again = False


      【參考】

      #for循環(huán)
      import time
      import random

      player_victory = 0
      enemy_victory = 0

      for i in range(1,4):
      time.sleep(1.5)
      print(' \n——————現(xiàn)在是第 %s 局——————' % i)
      player_life = random.randint(100,150)
      player_attack = random.randint(30,50)
      enemy_life = random.randint(100,150)
      enemy_attack = random.randint(30,50)

      print('【玩家】\n血量:%s\n攻擊:%s' % (player_life,player_attack))
      print('------------------------')
      time.sleep(1)
      print('【敵人】\n血量:%s\n攻擊:%s' % (enemy_life,enemy_attack))
      print('-----------------------')
      time.sleep(1)

      while player_life > 0 and enemy_life > 0:
      player_life = player_life - enemy_attack
      enemy_life = enemy_life - player_attack
      print('你發(fā)起了攻擊,【玩家】剩余血量%s' % player_life)
      print('敵人向你發(fā)起了攻擊,【敵人】的血量剩余%s' % enemy_life)
      print('-----------------------')
      time.sleep(1.2)

      if player_life > 0 and enemy_life <= 0:
      player_victory = 1
      print('敵人死翹翹了,你贏了!')
      elif player_life <= 0 and enemy_life > 0:
      enemy_victory = 1
      print('悲催,敵人把你干掉了!')
      else:
      print('哎呀,你和敵人同歸于盡了!')

      if player_victory > enemy_victory :
      time.sleep(1)
      print('\n【最終結(jié)果:你贏了!】')
      elif enemy_victory > player_victory:
      print('\n【最終結(jié)果:你輸了!】')
      else:
      print('\n【最終結(jié)果:平局!】')

      #while 循環(huán)
      import time
      import random

      player_victory = 0
      enemy_victory = 0

      while True:
      for i in range(1,4):
      time.sleep(1.5)
      print(' \n——————現(xiàn)在是第 %s 局——————' % i)
      player_life = random.randint(100,150)
      player_attack = random.randint(30,50)
      enemy_life = random.randint(100,150)
      enemy_attack = random.randint(30,50)

      print('【玩家】\n血量:%s\n攻擊:%s' % (player_life,player_attack))
      print('------------------------')
      time.sleep(1)
      print('【敵人】\n血量:%s\n攻擊:%s' % (enemy_life,enemy_attack))
      print('-----------------------')
      time.sleep(1)

      while player_life > 0 and enemy_life > 0:
      player_life = player_life - enemy_attack
      enemy_life = enemy_life - player_attack
      print('你發(fā)起了攻擊,【玩家】剩余血量%s' % player_life)
      print('敵人向你發(fā)起了攻擊,【敵人】的血量剩余%s' % enemy_life)
      print('-----------------------')
      time.sleep(1.2)

      if player_life > 0 and enemy_life <= 0:
      player_victory = 1
      print('敵人死翹翹了,你贏了!')
      elif player_life <= 0 and enemy_life > 0:
      enemy_victory = 1
      print('悲催,敵人把你干掉了!')
      else:
      print('哎呀,你和敵人同歸于盡了!')

      if player_victory > enemy_victory :
      time.sleep(1)
      print('\n【最終結(jié)果:你贏了!】')
      elif enemy_victory > player_victory:
      print('\n【最終結(jié)果:你輸了!】')
      else:
      print('\n【最終結(jié)果:平局!】')

      a1 = input('要繼續(xù)游戲嗎,請(qǐng)輸入n退出,輸入其他繼續(xù):')
      if a1 == 'n':
      break



      第8關(guān)

      練習(xí)1-老師我?guī)湍?參考

      1. 合并列表-1

      分析問題,明確結(jié)果

      我們的問題是:將兩個(gè)列表合并起來,并按照從低到高的順序排序,要得到問題的結(jié)果,我們還需要借助打印函數(shù)看看我們合并的是否正確。


      思考要用到的知識(shí)&思考切入點(diǎn)

      增加列表的內(nèi)容與合并列表的含義相同,所以我們可以使用append作為解題的切入點(diǎn),請(qǐng)你試試!

      提示:假設(shè)要用已學(xué)過的知識(shí)來完成這道作業(yè),需要用到列表的新增函數(shù)和循環(huán)。


      list1 =  [91, 95, 97, 99]  
      list2 =  [92, 93, 96, 98]
      for i in list2:
          list1.append(i)
      print(list1)


      2.合并列表-2

      上網(wǎng)搜索新知識(shí)&找到新的切入點(diǎn)

      好了。你已經(jīng)完成了第一個(gè)需求:合并列表。不過,有沒有發(fā)現(xiàn),這個(gè)代碼還是比較冗余的。有沒有更簡單的方法呢?請(qǐng)你自己上網(wǎng)搜索一下

      `python 合并兩個(gè)列表`,看看是否有更簡單的方法(提示:以字母e開頭),學(xué)會(huì)后再回來繼續(xù)做作業(yè)吧。

      請(qǐng)你根據(jù)新學(xué)到的知識(shí),簡化代碼。

      注(如果你直接將 list2 合并到 list1 上,那就無法做到只看A組的成績,所以,最好再建一個(gè)列表來合并兩組的成績)


      list1 =  [91, 95, 97, 99]  
      list2 =  [92, 93, 96, 98]
      # 把 A 組成績賦值給一個(gè)新列表,用來存合并的成績——這個(gè)細(xì)節(jié)要注意!
      list3 =list1
      list3.extend(list2)
      print(list3)


      3.列表排序

      主動(dòng)搜索,掌握新知

      老師鼓勵(lì)你自己去探尋解決問題的方法,上網(wǎng)搜索一下列表的排序方法吧,是不是發(fā)現(xiàn)了一個(gè)以字母s開頭的方法?


      list3= [91, 95, 97, 99, 92, 93, 96, 98]
      list3.sort()
      print(list3)




      第9關(guān)

      練習(xí)1-Hellokitty抽獎(jiǎng)器-參考


      練習(xí)目標(biāo):

      我們會(huì)通過今天的項(xiàng)目練習(xí),學(xué)習(xí)函數(shù)的封裝和調(diào)用。



      練習(xí)要求:

      我們已經(jīng)有一個(gè)hellokitty抽獎(jiǎng)器,現(xiàn)在,請(qǐng)你把這個(gè)程序封裝成一個(gè)新的函數(shù)。


      運(yùn)行抽獎(jiǎng)器的代碼參考

      import random
      import time

      # 用random函數(shù)在列表中隨機(jī)抽獎(jiǎng),列表中只有3位候選者。
      luckylist = ['海綿寶寶','派大星','章魚哥']
      # random模塊中有個(gè)隨機(jī)選取一個(gè)元素的方法:random.choice()。
      a = random.choice(luckylist) # 從3個(gè)人中隨機(jī)選取1個(gè)人。
      print('開獎(jiǎng)倒計(jì)時(shí)',3)
      time.sleep(1) # 調(diào)用time模塊,控制打印內(nèi)容出現(xiàn)的時(shí)間
      print('開獎(jiǎng)倒計(jì)時(shí)',2)
      time.sleep(1)
      print('開獎(jiǎng)倒計(jì)時(shí)',1)
      time.sleep(1)
      # 使用三引號(hào)打印hellokitty的頭像
      image = '''
      /\_)o<
      | \\
      | O . O|
      \_____/
      '''
      print(image) # ……
      print('恭喜' a '中獎(jiǎng)!') # 使用print函數(shù)打印幸運(yùn)者名單
      import random
      import time

      運(yùn)行代碼,熟悉了解抽獎(jiǎng)器抽獎(jiǎng)的原理,請(qǐng)仔細(xì)查看注釋講解。


      分析代碼結(jié)構(gòu),完成函數(shù)封裝

      # 提示:將以下部分封裝進(jìn)函數(shù)
      luckylist = ['海綿寶寶','派大星','章魚哥']
      a = random.choice(luckylist)
      print('開獎(jiǎng)倒計(jì)時(shí)',3)
      time.sleep(1)
      print('開獎(jiǎng)倒計(jì)時(shí)',2)
      time.sleep(1)
      print('開獎(jiǎng)倒計(jì)時(shí)',1)
      time.sleep(1)
      image = '''
      /\_)o<
      | \\
      | O . O|
      \_____/
      '''
      print(image)
      print('恭喜' a '中獎(jiǎng)!')
      # 查看注釋,運(yùn)行代碼。
      import random
      import time


      抽獎(jiǎng)程序分為兩部分:

      我們需要將第二部分用函數(shù)封裝起來,并調(diào)用函數(shù)。提示:3個(gè)參與者即函數(shù)有3個(gè)參數(shù)。

      import random
      import time

      # 將抽獎(jiǎng)程序封裝成函數(shù)
      def choujiang(q,w,e): # 定義一個(gè)抽獎(jiǎng)函數(shù),帶有3個(gè)參數(shù),也就是3位候選人
      luckylist = [q,w,e] # 定義一個(gè)中獎(jiǎng)名單的列表
      a = random.choice(luckylist) # 在中獎(jiǎng)名單里面隨機(jī)選擇
      print('開獎(jiǎng)倒計(jì)時(shí)',3)
      time.sleep(1)
      print('開獎(jiǎng)倒計(jì)時(shí)',2)
      time.sleep(1)
      print('開獎(jiǎng)倒計(jì)時(shí)',1)
      time.sleep(1)
      image = '''
      /\_)o<
      | \\
      | O . O|
      \_____/
      '''
      print(image)
      print('恭喜' a '中獎(jiǎng)!')
      choujiang('虛竹','蕭峰','段譽(yù)') # 調(diào)用函數(shù)





      第10關(guān)

      練習(xí)1-剪刀石頭布-參考

      練習(xí)要求:

      和電腦玩一個(gè)剪刀石頭布的游戲:電腦隨機(jī)出拳,我們可選擇出什么。


      練習(xí)目標(biāo):

      我們會(huì)通過今天的作業(yè),做出和電腦進(jìn)行“石頭剪刀布”的游戲。


      練習(xí)要求:

      和電腦玩一個(gè)剪刀石頭布的游戲:電腦隨機(jī)出拳,我們可選擇出什么。


      1.雙方出拳

      首先,我們要讓雙方選擇出拳,才能判斷勝負(fù)。

      我們可以設(shè)置變量computer_choice代表電腦的出拳選擇,設(shè)置變量user_choice代表你的出拳選擇。

      電腦的出拳,我們可以使用random.choice()來隨機(jī)選擇;我們的出拳,可以手動(dòng)輸入我們出拳的類型。

      另外,判斷下輸入:當(dāng)輸入的內(nèi)容不是石頭剪刀布時(shí),電腦會(huì)提醒'輸入有誤,請(qǐng)重新出拳',并重新出拳。

      import random
      # 出拳

      punches = ['石頭','剪刀','布']
      computer_choice = random.choice(punches)
      user_choice = ''
      user_choice = input('請(qǐng)出拳:(石頭、剪刀、布)') # 請(qǐng)用戶輸入選擇
      while user_choice not in punches: # 當(dāng)用戶輸入錯(cuò)誤,提示錯(cuò)誤,重新輸入
      print('輸入有誤,請(qǐng)重新出拳')
      user_choice = input()

      2.雙方亮拳

      你和電腦已經(jīng)對(duì)自己要出的拳進(jìn)行了選擇,接下來,我們需要知道雙方的出拳類型。

      請(qǐng)使用print()函數(shù)補(bǔ)充亮拳的結(jié)果。

      import random

      # 出拳
      punches = ['石頭','剪刀','布']
      computer_choice = random.choice(punches)
      user_choice = ''
      user_choice = input('請(qǐng)出拳:(石頭、剪刀、布)') # 請(qǐng)用戶輸入選擇
      while user_choice not in punches: # 當(dāng)用戶輸入錯(cuò)誤,提示錯(cuò)誤,重新輸入
      print('輸入有誤,請(qǐng)重新出拳')
      user_choice = input()

      # 亮拳
      print('————戰(zhàn)斗過程————')
      print('電腦出了:%s' %(computer_choice))
      print('你出了:%s' %(user_choice))


      3.判斷勝負(fù)

      在前面兩步,電腦和你已經(jīng)選擇完出拳的類型并亮拳后,只差最后一步:根據(jù)結(jié)果判斷勝負(fù)。

      勝負(fù)分為三種情況:

      兩方出拳一致:平局;

      你出石頭,電腦出剪刀;你出剪刀,電腦出布;你出布,電腦出石頭:你獲勝;

      其他情況:你輸了。

      根據(jù)上面的邏輯將代碼補(bǔ)充完整,判斷勝負(fù),試試能否運(yùn)行。

      import random

      # 出拳
      punches = ['石頭','剪刀','布']
      computer_choice = random.choice(punches)
      user_choice = ''
      user_choice = input('請(qǐng)出拳:(石頭、剪刀、布)') # 請(qǐng)用戶輸入選擇
      while user_choice not in punches: # 當(dāng)用戶輸入錯(cuò)誤,提示錯(cuò)誤,重新輸入
      print('輸入有誤,請(qǐng)重新出拳')
      user_choice = input()

      # 亮拳
      print('————戰(zhàn)斗過程————')
      print('電腦出了:%s' %(computer_choice))
      print('你出了:%s' %(user_choice))

      # 勝負(fù)
      print('—————結(jié)果—————')


      參考答案

      punches = ['石頭','剪刀','布']
      computer_choice = random.choice(punches)
      user_choice = ''
      user_choice = input('請(qǐng)出拳:(石頭、剪刀、布)') # 請(qǐng)用戶輸入選擇
      while user_choice not in punches: # 當(dāng)用戶輸入錯(cuò)誤,提示錯(cuò)誤,重新輸入
      print('輸入有誤,請(qǐng)重新出拳')
      user_choice = input()

      # 亮拳
      print('————戰(zhàn)斗過程————')
      print('電腦出了:%s' %(computer_choice))
      print('你出了:%s' %(user_choice))

      # 勝負(fù)
      print('—————結(jié)果—————')
      if user_choice == computer_choice: # 使用if進(jìn)行條件判斷
      print('平局!')
      elif (user_choice == '石頭' and computer_choice == '剪刀') or (user_choice == '剪刀' and computer_choice == '布') or (user_choice == '布' and computer_choice == '石頭'):
      print('你贏了!')
      else:
      print('你輸了!')




      第11關(guān)

      練習(xí)1-一起來捉蟲-參考

      1.知識(shí)點(diǎn)debug

      【參考】

      scores = {'語文':89, '數(shù)學(xué)':95, '英語':80}
      def get_average(scores):
          sum_score = 0
          for subject, score in scores.items():
              sum_score = score
              print('現(xiàn)在的總分是%d'%sum_score)
          ave_score = sum_score/len(scores)
          print('平均分是%d'%ave_score)


      get_average(scores)


      2.思維不清debug

      【參考】

      not_bad_word = True
      while not_bad_word:
          x = input('請(qǐng)給旺財(cái)取個(gè)外號(hào):')
          if x == '小狗' or x =='汪汪'# 只要外號(hào)是兩個(gè)中的一個(gè),就會(huì)生氣。
              not_bad_word = False
              print('我生氣了,不想理你了!')


      print('對(duì)不起,以后我不會(huì)這么叫你了')


      3.被動(dòng)掉坑debug

      【參考】

      deposit = [100,300,900,2000,5000,0,2000,4500]

      for i in range(1, len(deposit)):
          if deposit[i-1] == 0:  # 判斷被除數(shù)等于0時(shí),特殊處理。
              print('你上次存款為 0 哦!')
          else:
              times = deposit[i]/deposit[i-1]
              print('你的存款漲了%f倍'%times)





      第12關(guān)

      練習(xí)1-員工管理系統(tǒng)-參考

      1.新增業(yè)績的類方法

      【參考】

      # 創(chuàng)建一個(gè)人事系統(tǒng)類
      class hrSystem:
          # 創(chuàng)建存儲(chǔ)員工名字的變量 name
          name = ''
          # 創(chuàng)建存儲(chǔ)員工工資的變量 salary
          salary = 0
          # 創(chuàng)建存儲(chǔ)員工績效的變量 kpi 
          kpi = 0

          # 定義錄入員工信息的類方法
          @classmethod
          def record(cls, name, salary, kpi):
              cls.name = name
              cls.salary = salary
              cls.kpi = kpi

          # 定義打印員工信息的類方法
          @classmethod
          def print_record(cls):
              print(cls.name '的工作信息如下:')
              print('本月工資:' str(cls.salary))
              print('本年績效:' str(cls.kpi))

          # 定義根據(jù) kpi 評(píng)獎(jiǎng)的類方法
          @classmethod
          def kpi_reward(cls):
              if cls.kpi > 95:
                  print('恭喜' cls.name '拿到明星員工獎(jiǎng)杯!')
              elif cls.kpi <= 95 and cls.kpi >= 80:
                  print('恭喜' cls.name '拿到優(yōu)秀員工獎(jiǎng)杯!')
              else:
                  print('很遺憾' cls.name '這次沒有評(píng)上獎(jiǎng)杯,希望來年努力工作,勇創(chuàng)佳績!')

      # 驗(yàn)證結(jié)果的代碼        
      hrSystem.record('bob', 13000, 98)
      hrSystem.kpi_reward()
      hrSystem.record('candy', 8000, 89)
      hrSystem.kpi_reward()
      hrSystem.record('jony', 8000, 75)
      hrSystem.kpi_reward()


      2.新增檢測(cè)名字的類方法

      【參考】

      # 創(chuàng)建一個(gè)人事系統(tǒng)類
      class hrSystem:
          # 創(chuàng)建存儲(chǔ)員工名字的變量 name
          name = ''
          # 創(chuàng)建存儲(chǔ)員工工資的變量 salary
          salary = 0
          # 創(chuàng)建存儲(chǔ)員工績效的變量 kpi 
          kpi = 0

          # 定義錄入員工信息的類方法
          @classmethod
          def record(cls, name, salary, kpi):
              cls.name = name
              cls.salary = salary
              cls.kpi = kpi

          # 定義打印員工信息的類方法
          @classmethod
          def print_record(cls):
              print(cls.name '的工作信息如下:')
              print('本月工資:' str(cls.salary))
              print('本年績效:' str(cls.kpi))

          # 定義根據(jù) kpi 評(píng)獎(jiǎng)的類方法
          @classmethod
          def kpi_reward(cls):
              if cls.kpi > 95:
                  print('恭喜' cls.name '拿到明星員工獎(jiǎng)杯!')
              elif cls.kpi <= 95 and cls.kpi >= 80:
                  print('恭喜' cls.name '拿到優(yōu)秀員工獎(jiǎng)杯!')
              else:
                  print('很遺憾' cls.name '這次沒有評(píng)上獎(jiǎng)杯,希望來年努力工作,勇創(chuàng)佳績!')

          # 檢查錄入名稱是否正確的類方法   
          @classmethod
          def check_name(cls):
              if cls.name not in ['bob', 'candy', 'jony', 'kelly']:
                  print('錄入錯(cuò)誤!' cls.name '不是本公司員工!')
              else:
                  print('錄入正確~')

      # 驗(yàn)證結(jié)果的代碼
      hrSystem.record('bob', 13000, 98)
      hrSystem.check_name()
      hrSystem.record('spy', 3000, 60)
      hrSystem.check_name()


      3.優(yōu)化代碼

      【參考】

      # 創(chuàng)建一個(gè)人事系統(tǒng)類
      class hrSystem:
          # 創(chuàng)建存儲(chǔ)員工名字的變量 name
          name = ''
          # 創(chuàng)建存儲(chǔ)員工工資的變量 salary
          salary = 0
          # 創(chuàng)建存儲(chǔ)員工績效的變量 kpi 
          kpi = 0

          # 定義錄入員工信息的類方法
          @classmethod
          def record(cls, name, salary, kpi):
              cls.name = name
              cls.salary = salary
              cls.kpi = kpi

          # 定義打印員工信息的類方法
          @classmethod
          def print_record(cls):
              if cls.check_name():  # 以 cls.check_name() 的返回值(0或1)作為判斷條件。
                  print(cls.name '的工作信息如下:')
                  print('本月工資:' str(cls.salary))
                  print('本年績效:' str(cls.kpi))

          # 定義根據(jù) kpi 評(píng)獎(jiǎng)的類方法
          @classmethod
          def kpi_reward(cls):
              if cls.kpi > 95:
                  print('恭喜' cls.name '拿到明星員工獎(jiǎng)杯!')
              elif cls.kpi <= 95 and cls.kpi >= 80:
                  print('恭喜' cls.name '拿到優(yōu)秀員工獎(jiǎng)杯!')
              else:
                  print('很遺憾' cls.name '這次沒有評(píng)上獎(jiǎng)杯,希望來年努力工作,勇創(chuàng)佳績!')
          # 檢查錄入名稱是否正確的類方法
          @classmethod
          def check_name(cls):
              if cls.name not in ['bob', 'candy', 'jony', 'kelly']:
                  print('錄入錯(cuò)誤!' cls.name '不是本公司員工!')
                  return 0  # 設(shè)置返回值為0
              else:
                  print('錄入正確~')
                  return 1  # 設(shè)置返回值為1

      # 驗(yàn)證結(jié)果的代碼
      hrSystem.record('spy', 3000, 60)
      hrSystem.print_record()





      第13關(guān)

      練習(xí)1-問卷搜集器-參考

      1.問卷答案的儲(chǔ)存

      【參考】

      # 不用運(yùn)行,讀懂即可。
      class Survey():
          # 收集調(diào)查問卷的答案
          def __init__(self, question):
              self.question = question
              # 定義收集問卷問題答案的列表
              self.response = []
          # 顯示調(diào)查問卷的題目
          def show_question(self):
              print(self.question)

          # 存儲(chǔ)問卷搜集的答案
          def store_response(self, new_response):
              self.response.append(new_response)  
              # 將答案添加到列表self.response(見第7行


      2.搜集問題-最喜歡的美食

      【參考】

      class Survey():
          # 收集調(diào)查問卷的答案
          def __init__(self, question):
              self.question = question
              self.response = []
          # 顯示調(diào)查問卷的題目
          def show_question(self):
              print(self.question)

          # 存儲(chǔ)問卷搜集的答案
          def store_response(self, new_response):
              self.response.append(new_response)

      # 請(qǐng)實(shí)例化Survey()類,并且顯示出這次的調(diào)查問卷問題。
      food_survey = Survey('你最喜歡的美食是什么?'# 類的實(shí)例化,同時(shí)為參數(shù)question賦值。
      food_survey.show_question()  # 調(diào)用類方法打印問題

      # 存儲(chǔ)問卷調(diào)查的答案
      while True:
          response = input('請(qǐng)回答問卷問題,按 q 鍵退出:')
          if response == 'q':
              break
          food_survey.store_response(response)  # 再次調(diào)用類方法,進(jìn)行問答的收集。

      # 輸出測(cè)試
      for food in food_survey.response:
          print('美食:' food)


      3.實(shí)名問卷:搜集名字和籍貫地

      【參考】

      class Survey():
          # 收集調(diào)查問卷的答案
          def __init__(self, question):
              self.question = question
              self.response = []
          # 顯示調(diào)查問卷的題目
          def show_question(self):
              print(self.question)

          # 存儲(chǔ)問卷搜集的答案
          def store_response(self, new_response):
              self.response.append(new_response)

      # 請(qǐng)定義實(shí)名調(diào)查問卷的新類 RealNameSurvey,繼承自 Survey 類
      class RealNameSurvey(Survey):
          def __init__(self, question):
              Survey.__init__(self, question)
              self.response = {}  # 由于籍貫地和名字掛鉤,所以用構(gòu)成為“鍵值對(duì)”的字典來存放。
          # 存儲(chǔ)問卷搜集的答案(覆蓋父類的類方法)
          def store_response(self, name, new_response)# 除了 self,還需要兩個(gè)參數(shù)。
              self.response[name] = new_response  # 鍵值對(duì)的新增

      survey = RealNameSurvey('你的籍貫地是哪?')
      survey.show_question()
      while True:
          response = input('請(qǐng)回答問卷問題,按 q 鍵退出:')
          if response == 'q':
              break
          name = input('請(qǐng)輸入回答者姓名:')
          survey.store_response(name, response)  # 調(diào)用類方法,將兩次通過 input 的字符串存入字典。

      # 輸出測(cè)試
      for name, value in survey.response.items():
          print(name ':' value)





      第14關(guān)

      練習(xí)1-升級(jí)版游戲-參考

      1.代碼實(shí)驗(yàn)

      【參考】

      import random

      player_list = ['【圣光騎士】','【暗影刺客】','【精靈弩手】']
      players = []

      for i in range(3):
          player = random.choice(player_list)
          players.append(player)

      print(players)

      # 判斷方式1:比較運(yùn)算符

      # 角色類型都一樣
      if players[0] == players[1] == players[2]:
          print('我們都一樣!——方式1'# 在打印結(jié)果中加上“方式N”,驗(yàn)證不同的判斷方式的有效性。

      # 角色類型都不一樣
      if players[0] != players[1] and players[0] != players[2] and players[1] != players[2]:
          print('我們都不一樣!——方式1')

      # 判斷方式2:set()
      # 集合(set)是一個(gè)無序的不重復(fù)元素序列,set()可以去重,然后生成一個(gè)集合。

      players_set = set(players)

      # 角色類型都一樣&角色類型都不一樣
      if len(players_set) == 1:
          print('我們都一樣!——方式2')
      elif len(players_set) == 3:
          print('我們都不一樣!——方式2')

      # 其他判斷方式

      '''
      除了上面兩種方式外,還有很多方式可以考慮:

      例如:類似判斷方式2,可以新建一個(gè)列表,用 append 添加不重復(fù)的角色類型,然后看這個(gè)列表的長度是多少(類似判斷方式2)。
      再如:“角色類型完全不一樣”,可先將players和player_list按相同的排序方式排一下,再判斷兩個(gè)排序后的列表是否相同。


      總而言之:只要你愿意思考、嘗試和搜索,就可以得出各種不同的判斷方式。
      '''

      # 再舉一個(gè)例子:
      if sorted(players) == sorted(player_list):
          print('我們都不一樣!——方式3')
      else:
          pass


      2.加新功能

      【參考】

      # 查看新增的代碼和注釋


      import random
      import time


      # 創(chuàng)建一個(gè)類,可實(shí)例化成具體的游戲角色
      class Role:
          def __init__(self, name):
              self.name = name
              self.life = random.randint(100,150)
              self.attack = random.randint(30,50)


      # 創(chuàng)建3個(gè)子類,可實(shí)例化為3個(gè)不同的角色類型


      class Knight(Role):
          def __init__(self, name = '【圣光騎士】'):
              Role.__init__(self,name)
              self.life = int(self.life*1.5)
              self.attack = int(self.attack*0.8)


          def fight_buff(self, opponent,str1,str2):
              if opponent.name  == '【暗影刺客】':
                  self.attack = int(self.attack * 1.5)
                  print('『%s』【圣光騎士】對(duì) 『%s』【暗影刺客】說:“讓無盡光芒制裁你的墮落!”'%(str1, str2))


      class Assassin(Role):
          def __init__(self, name = '【暗影刺客】'):
              Role.__init__(self,name)
              self.life = int(self.life*0.8)
              self.attack = int(self.attack*1.5)


          # 角色類型克制關(guān)系
          def fight_buff(self, opponent,str1,str2):
              if opponent.name  == '【精靈弩手】':
                  self.attack = int(self.attack * 1.5)
                  print('『%s』【暗影刺客】對(duì) 『%s』【精靈弩手】說:“主動(dòng)找死,就別怪我心狠手辣?!?%(str1, str2)) 


      class Bowman(Role):
          def __init__(self, name = '【精靈弩手】'):
              Role.__init__(self,name)
              self.life = int(self.life*1.2)
              self.attack = int(self.attack*1.2)


          def fight_buff(self, opponent,str1,str2):
              if opponent.name  == '【圣光騎士】':
                  self.attack = int(self.attack * 1.5)
                  print('『%s』【精靈弩手】對(duì) 『%s』【圣光騎士】說:“騎著倔驢又如何?你都碰不到我衣服?!?%(str1, str2))


      # 創(chuàng)建一個(gè)類,可生成3V3并展示:可分為:歡迎語→隨機(jī)生成→展示角色
      class Game:
          def __init__(self):
              self.players = []
              self.enemies = []
              self.score = 0
              self.i = 0
              # 依次執(zhí)行以下函數(shù)
              self.game_start()  # 歡迎語
              self.born_role()  # 隨機(jī)生成6個(gè)角色
              self.cooperat_role()  # 角色類型引起的屬性加成
              self.show_role()  # 展示角色
              self.order_role()  # 排序并展示
              self.pk_role()  # 讓雙方 Pk 并展示結(jié)果
              self.show_result()  # 展示最終結(jié)局


          # 歡迎語
          def game_start(self):
              print('------------ 歡迎來到“煉獄角斗場(chǎng)” ------------')
              print('在昔日的黃昏山脈,奧盧帝國的北境邊界上,有傳說中的“煉獄角斗場(chǎng)”。')
              print('鮮血與戰(zhàn)斗是角斗士的歸宿,金錢與榮耀是角斗士的信仰!')
              print('今日,只要你【你的隊(duì)伍】能取得勝利,你將獲得一筆夠花500年的財(cái)富。')
              time.sleep(2)
              print('將隨機(jī)生成【你的隊(duì)伍】和【敵人隊(duì)伍】!')
              input('\n狹路相逢勇者勝,請(qǐng)按任意鍵繼續(xù)。\n')
          # 隨機(jī)生成6個(gè)角色
          def born_role(self):
              for i in range(3):
                  self.players.append(random.choice([Knight(),Assassin(),Bowman()]))
                  self.enemies.append(random.choice([Knight(),Assassin(),Bowman()]))


          # 判斷是否滿足角色類型配合的條件
          def cooperat_role(self):
              players_list = [self.players[0].name,self.players[1].name,self.players[2].name]
              enemies_list = [self.enemies[0].name,self.enemies[1].name,self.enemies[2].name]
              players_set = set(players_list)
              enemies_set = set(enemies_list)
              # print(players_list)  # 這幾行是驗(yàn)證代碼,正式代碼里會(huì)刪掉。感興趣的話,可取消注釋后一起運(yùn)行。
              # print(players_set)
              # print(enemies_list)
              # print(enemies_set)
              if len(players_set) == 1:
                  print('我方觸發(fā)了“角色類型一致”的條件,每個(gè)角色的血量增加25%。')
                  for i in range(3):
                      self.players[i].life = int(self.players[i].life * 1.25)
              if len(players_set) == 3:
                  print('我方觸發(fā)了“角色類型兼?zhèn)洹钡臈l件,每個(gè)角色的攻擊增加25%。')
                  for i in range(3):
                      self.players[i].attack = int(self.players[i].attack * 1.25)
              if len(enemies_set) == 1:
                  print('敵方觸發(fā)了“角色類型一致”的條件,每個(gè)角色的血量增加25%。')
                  for i in range(3):
                      self.enemies[i].life = int(self.enemies[i].life * 1.25)
              if len(enemies_set) == 3:
                  print('敵方觸發(fā)了“角色類型兼?zhèn)洹钡臈l件,每個(gè)角色的攻擊增加25%。')
                  for i in range(3):
                      self.enemies[i].attack = int(self.enemies[i].attack * 1.25)
              input('請(qǐng)按任意鍵,查看【你的隊(duì)伍】和【敵人隊(duì)伍】的角色信息:')  # 緩一緩,再展示。


          # 展示角色
          def show_role(self):
              print('----------------- 角色信息 -----------------')
              print('你的隊(duì)伍:')
              for i in range(3):
                  print( '『我方』%s 血量:%s  攻擊:%s'%
                  (self.players[i].name,self.players[i].life,self.players[i].attack))
              print('--------------------------------------------')


              print('敵人隊(duì)伍:')
              for i in range(3):
                  print('『敵方』%s 血量:%s  攻擊:%s'%
                  (self.enemies[i].name,self.enemies[i].life,self.enemies[i].attack))
              print('--------------------------------------------')
              input('請(qǐng)按回車鍵繼續(xù)。\n')


          # 排序并展示
          def order_role(self):
              order_dict = {}
              i=0
              while i < 3:
                  order = int(input('你想將 %s 排在第幾個(gè)上場(chǎng)?(輸入數(shù)字1-3)'%(self.players[i].name)))
                  if order in [1,2,3]:
                      if order in order_dict:
                          print('你輸入了重復(fù)的數(shù)字,請(qǐng)重新輸入:')
                      else:
                          order_dict[order] = self.players[i]
                          i = 1
                  else:
                      print('輸入有誤,請(qǐng)輸入1或2或3:')
              self.players = []
              for i in range(1,4):
                  self.players.append(order_dict[i]) 
              print('\n你的隊(duì)伍出場(chǎng)順序是:%s、%s、%s'
              %(self.players[0].name,self.players[1].name,self.players[2].name))
              print('敵人隊(duì)伍出場(chǎng)順序是:%s、%s、%s'
              %(self.enemies[0].name,self.enemies[1].name,self.enemies[2].name))


          # 讓雙方 Pk 并展示結(jié)果
          def pk_role(self):
              for i in range(3):
                  print('\n----------------- 【第%s輪】 -----------------' % (i 1))
                  # 每一局開戰(zhàn)前加buff
                  self.players[i].fight_buff(self.enemies[i],'我方','敵方')
                  self.enemies[i].fight_buff(self.players[i],'敵方','我方')
                  input('\n戰(zhàn)斗雙方準(zhǔn)備完畢,請(qǐng)按回車鍵繼續(xù)。')
                  print('--------------------------------------------')
                  while self.players[i].life >0 and self.enemies[i].life>0:
                      self.enemies[i].life -= self.players[i].attack
                      self.players[i].life -= self.enemies[i].attack
                      print('我方%s 發(fā)起了攻擊,敵方%s 剩余血量 %s'%
                      (self.players[i].name,self.enemies[i].name,self.enemies[i].life))
                      print('敵方%s 發(fā)起了攻擊,我方%s 剩余血量 %s'%
                      (self.enemies[i].name,self.players[i].name,self.players[i].life))
                      print('--------------------------------------------')
                      time.sleep(1)
                  if self.players[i].life <= 0 and self.enemies[i].life> 0:
                      print('\n很遺憾,我方%s 掛掉了!'% (self.players[i].name))
                      self.score -= 1
                  elif self.players[i].life >0 and self.enemies[i].life<= 0: 
                      print('\n恭喜,我方%s 活下來了。'% (self.players[i].name))
                      self.score = 1
                  else:
                      print('\n我的天,他們倆都死了啊!')


          # 展示最終結(jié)局
          def show_result(self):
              input('\n請(qǐng)按回車查看最終結(jié)果。\n')
              if self.score >0:
                  print('【最終結(jié)果】\n你贏了,最終的財(cái)寶都?xì)w你了!')
              elif self.score == 0:
                  print('【最終結(jié)果】\n你沒有勝利,但也沒有失敗,在夜色中灰溜溜離開了奧盧帝國。')
              else:
                  print('【最終結(jié)果】\n你輸了。煉獄角斗場(chǎng)又多了幾具枯骨。')


      game = Game()





      第15關(guān)

      練習(xí)1-數(shù)據(jù)轉(zhuǎn)移中的變化-參考

      1.編碼和解碼

      【參考】

      # 1.分別使用gbk和utf-8編碼自己的名字,并將其打印出來。
      print('吳楓'.encode('gbk'))
      print('吳楓'.encode('utf-8'))

      # 2.復(fù)制上一步得到的結(jié)果,進(jìn)行解碼,打印出你的名字(兩次)。
      print(b'\xe5\x90\xb4\xe6\x9e\xab'.decode('utf-8'))

      # 3.使用gbk解碼b'\xb7\xe7\xb1\xe4\xbf\xc6\xbc\xbc\xd3\xd0\xd2\xe2\xcb\xbc',并打印出來。

      print(b'\xb7\xe7\xb1\xe4\xbf\xc6\xbc\xbc\xd3\xd0\xd2\xe2\xcb\xbc'.decode('gbk'))


      2.通過文件讀寫,復(fù)制圖片

      【參考】

      # 先打開圖片
      with open('photo1.png','rb') as file# 以“rb”模式打開圖片
          data = file.read()
          with open('photo3.png','wb') as newfile:  # 以“wb”模式寫入
              newfile.write(data)


      2.在讀寫之間處理數(shù)據(jù)-2

      【參考】

      file1 = open('scores.txt','r',encoding='utf-8') 
      file_lines = file1.readlines() 
      file1.close()

      final_scores = []

      for i in file_lines:
          data =i.split()
          sum = 0  # 先把總成績?cè)O(shè)為0
          for score in data[1:]:  # 遍歷列表中第1個(gè)數(shù)據(jù)和之后的數(shù)據(jù)
              sum = sum int(score)  # 然后依次加起來,但分?jǐn)?shù)是字符串,所以要轉(zhuǎn)換    
          result = data[0] str(sum) '\n'  # 結(jié)果就是學(xué)生姓名和總分
          print(result)
          final_scores.append(result)

      print(final_scores)


      sum1 = open('winner.txt','w',encoding='utf-8') 
      sum1.writelines(final_scores)
      sum1.close()


      2.在讀寫之間處理數(shù)據(jù)-2

      【參考】

      ile1 = open('winner.txt','r',encoding='utf-8')
      file_lines = file1.readlines()
      file1.close()

      dict_scores = {}
      list_scores = []
      final_scores = []

      # print(file_lines)
      # print(len('\n'))

      # 打印結(jié)果為:['羅恩102\n', '哈利383\n', '赫敏570\n', '馬爾福275\n']
      # 經(jīng)過測(cè)試,發(fā)現(xiàn)'\n'的長度是1。所以,名字是“第0位-倒數(shù)第5位”,分?jǐn)?shù)是“倒數(shù)第4位-倒數(shù)第二位”。
      # 再根據(jù)“左取右不取”,可知:name-[:-4],score-[-4:-1]

      for i in file_lines: # i是字符串。
      print(i)
      name = i[:-4] # 取出名字(注:字符串和列表一樣,是通過偏移量來獲取內(nèi)部數(shù)據(jù)。)
      score = int(i[-4:-1]) # 取出成績
      print(name)
      print(score)
      dict_scores[score] = name # 將名字和成績對(duì)應(yīng)存為字典的鍵值對(duì)(注意:這里的成績是鍵)
      list_scores.append(score)

      # print(list_scores)
      list_scores.sort(reverse=True) # reverse,逆行,所以這時(shí)列表降序排列,分?jǐn)?shù)從高到低。
      # print(list_scores)

      for i in list_scores:
      result = dict_scores[i] str(i) '\n'
      # print(result)
      final_scores.append(result)

      print(final_scores) # 最終結(jié)果

      winner_new = open('winner_new.txt','w',encoding='utf-8')
      winner_new.writelines(final_scores)
      winner_new.close()




      第16關(guān)

      練習(xí)1-時(shí)間記錄器-參考

      【參考】

      import time

      input('歡迎使用“時(shí)間管理器”!請(qǐng)按回車?yán)^續(xù)。')

      while True:
          task_name = input('請(qǐng)輸入任務(wù)名:')
          task_time = int(input('你覺得自己至少可以專注這個(gè)任務(wù)多少分鐘?輸入 N 分鐘'))
          input('此次任務(wù)信息:\n我要完成的任務(wù):%s\n我至少要專注:%d分鐘\n按回車開始計(jì)時(shí):'%(task_name,task_time))
          start = time.time()  # 開始計(jì)時(shí)
          start_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))  # 格式化日期
          # for t in range(task_time*60,0,-1):  # 實(shí)際代碼:分鐘轉(zhuǎn)成秒要乘60,用-1來倒計(jì)時(shí)。
          for t in range(task_time,0,-1):
              info = '請(qǐng)專注任務(wù),還要保持專注 ' str(t) ' 秒哦!'
              print(info,end='')
              print('\b'*(len(info)*2),end='',flush=True)
              time.sleep(1)
          print('你已經(jīng)專注了 %d 分鐘,很棒~再加把勁,完成任務(wù)!'%task_time)  # 倒計(jì)時(shí)后,才繼續(xù)運(yùn)行之后的代碼。


          # 詢問任務(wù)是否完成
          task_status = input('請(qǐng)?jiān)谌蝿?wù)完成后按輸入y:')
          if task_status == 'y':
              end = time.time()  # 一定用戶按了 y,就記下結(jié)束時(shí)間。
              end_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))  # 日期格式化
              actual_time = int((end -start)/60)  # 始末時(shí)間相減,從秒換算到分,除以60。
              start_end = start_time '——' end_time '\n'
              with open('timelog3.txt','a', encoding = 'utf-8') as f:
                  f.write(task_name ' 的預(yù)計(jì)時(shí)長為:' str(task_time) '分鐘\n')
                  f.write(task_name ' 的實(shí)際時(shí)長為:' str(actual_time) '分鐘,具體時(shí)間為:' start_end)
              again = input('建立一個(gè)新任務(wù)請(qǐng)按 y, 退出時(shí)間日志記錄器請(qǐng)按 q:')
              if again == 'q':            
                  break
          else:
              print('抱歉,你的輸入有誤。請(qǐng)重啟時(shí)間記錄器。')

      print('愿被你善待的時(shí)光,予你美好的回贈(zèng)。')





      第17關(guān)

      練習(xí)1-自制動(dòng)態(tài)二維碼-參考

      【參考】

      # 先導(dǎo)入模塊
      from MyQR import myqr


      myqr.run(
          words='http://weixin.qq.com/r/kzlje9TEE4lsrZAY92yB',
          # 掃描二維碼后,顯示的內(nèi)容,或是跳轉(zhuǎn)的鏈接
          version=5,  # 設(shè)置容錯(cuò)率
          level='H',  # 控制糾錯(cuò)水平,范圍是L、M、Q、H,從左到右依次升高
          picture='she-3.gif',  # 圖片所在目錄,可以是動(dòng)圖
          colorized=True,  # 黑白(False)還是彩色(True)
          contrast=1.0,  # 用以調(diào)節(jié)圖片的對(duì)比度,1.0 表示原始圖片。默認(rèn)為1.0。
          brightness=1.0,  # 用來調(diào)節(jié)圖片的亮度,用法同上。
          save_name='Python.gif',  # 控制輸出文件名,格式可以是 .jpg, .png ,.bmp ,.gif
          )





      第17關(guān)

      練習(xí)1-拯救選擇困難癥-參考

      【參考】

      # 幫你做選擇之我要吃什么
      import random


      # 將需要用到的表格和變量放在開頭
      list_food = ['KFC', '蒸菜館', '樓下快餐店', '桂林米粉', '東北餃子', '金牌豬腳飯', '三及第湯飯'# 備選菜單,可自定義。
      list_choice = []


      # 由于兩個(gè)原因都包含判斷過程,所以,為了讓代碼更簡潔,可將其封裝成函數(shù)。
      def choose(list):
          while True:
              food = random.choice(list)
              judgement = input('去吃【%s】好不好???同意的話輸入y,不想吃直接回車即可。'%(food))
              if judgement == 'y':
                  print('去吃【%s】!就這么愉快地決定啦!'%(food)) 
                  break


      # 判斷環(huán)節(jié)
      reason = int(input('你不知道吃什么的原因是:1.完全不知道吃什么;2.在幾家店之間徘徊(請(qǐng)輸入1或2):'))
      if reason == 1:
          choose(list_food)
      elif reason == 2:
          add = True
          while add:
              choice = input('請(qǐng)輸入讓你猶豫的店名(注:一家一家輸,完成后輸入y):')
              if choice != 'y'# 這個(gè)判斷語句,是為了不將 y 也添加到菜單里。
                  list_choice.append(choice)
              if choice == 'y':
                  add = False
          choose(list_choice)          
      else:
          print('抱歉,目前還不支持第三種情況——不過,你可以加代碼哦。')


        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多