<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ` ![](http://upload-images.jianshu.io/upload_images/1108512-6b7858b8c57a9b3a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) >[之前講解了從scratch到python,基于python turtle庫的實現](http://www.jianshu.com/p/99729c45c839),講解了用scratch和python turtle繪圖的實現,以及讓小貓動起來和當角色被單擊的例子。 本節課講繼續探索從scratch到python的道路,以猜數游戲為進行講解。 ## 概述 猜數游戲是一個很經典的例子,要開發一個完整的猜數游戲,需要用到編程中的變量、循環、分支,獲取用戶輸入等基本知識,還要對邏輯運算有一定的了解。 本文將會帶領大家實現這樣一個小游戲,游戲開始后,讓用戶猜數字,如果數字大于或者小于目標數字將會給出提示,如果猜對了就讓用戶選擇是否繼續玩兒下去,如果選擇繼續,開始新一輪游戲;否則游戲結束;同時用戶每猜對一次得5分。 當然還可以更加復雜比如加入時間限制,因為復雜度高一些就不用了。 ## 分解 其實各國在中小學引入編程教育,更多的是讓孩子們從以計算機的方式來考慮問題,培養邏輯思維能力和編程思維,并非是要把所有人都培養成程序員。 編程思維是一個非常重要的概念,含義是將以大的問題分解問小的問題,然后逐步解決每個小問題,最后解決整個問題。 在谷歌教育的公開課中有關于編程思維的詳細論述,感興趣的老師可以去看一下,當然我自己也只是看了個開頭,畢竟推薦讀書的人有時候未必然是讀書的人嘛,但是我知道這是個好東西。 那么我們就把這個任務分解為以下步驟: 1. 用一個變量了保存用戶的積分 1. 生成目標數,在猜數游戲中目標應該是隨機的,同時保存在變量中 1. 提示用戶猜測數字,獲取用戶輸入,并保存在變量中 3. 判斷用戶輸入,給出適當的反饋 4. 如果用戶猜對了,加5分,詢問是否繼續 5. 如果用戶選擇繼續,重復1-5步;否則游戲結束 下面我們按照這個思路來實現這個程序 ## 具體實現 ### 積分變量 首先我們要新建一個變量,保存分數,并且初始化為0分 ![新建score變量](http://upload-images.jianshu.io/upload_images/1108512-51497660d95db999.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![講變量值設置為9](http://upload-images.jianshu.io/upload_images/1108512-a22cf2342c243c0d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 從現在開始我們就要感受到python的簡潔之美了,在scratch我們新建積分變量并設定為0,需要好幾步操作,而在python中只需要一句命令就好了 ``` score = 0 ``` 這也是高級語言的特點,Python作為高級語言,代碼量可以說是Java的十分之一,c語言的百分之一;當然對于初學者來說還是是誠然比較容易理解 聲明積分變量之后,我們就要生成要猜測的目標數字了. ## 生成目標數字 目標數字是個隨機數,是一定范圍之內的隨機數,所以我們先來看Scratch和Python都是怎么生成隨機數的 ![Scratch隨機數積木塊](http://upload-images.jianshu.io/upload_images/1108512-4ed2ba1710e652e8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 這次Python就需要費點腦筋了,Python有許多別人寫好的完成特定功能的代碼,成為代碼庫,生成隨機數的代碼庫叫做random,換句話說我們要用生成隨機數的功能,就需要引入random庫,然后庫中有函數,調用對應的函數就可以完成相應的功能 我們要用到的是```randomint()```函數,比如生成1-10的隨機整數就是```randomint(1, 10)``` 好,背景交代完畢,下面我們就上手來實現生成隨機數 ![target變量](http://upload-images.jianshu.io/upload_images/1108512-7db86683ef94ad6d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![然后把target的值設定為1到10之間的隨機數](http://upload-images.jianshu.io/upload_images/1108512-6da300cba157b838.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 接下來,我們看Python是如何實現的 ``` import random score = 0 target = random.randint(1, 10) print(score, target) ``` ![Python的實現](http://upload-images.jianshu.io/upload_images/1108512-eef456f75dd5f890.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 現在,積分變量也有了,也生成要猜測的數字了,接下來就要提示用戶猜數字了,用戶不輸入數字也就沒得玩了,不過似乎可以寫一個猜數的機器人,用隨機數來猜測,這又是另外一個程序了 ## 獲取用戶輸入 我們還是以Scratch為例進行講解,在Scratch獲取用戶輸入要用到偵測代碼分類中共的兩個代碼塊 ![得到用戶的輸入](http://upload-images.jianshu.io/upload_images/1108512-6e078fdec723d3f2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![獲取用戶輸入](http://upload-images.jianshu.io/upload_images/1108512-8932859bc93c32dc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 當然我們需要新建一個變量,并把用戶的回到放到這個變量里 ![獲取用戶輸入](http://upload-images.jianshu.io/upload_images/1108512-4666f7d4c47f7724.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 而Python中則要用到```input()```函數,但是有一點要注意的是,```input()```函數讀入的數據的類型是字符串類型,需要轉換成整數,而將字符串轉換為整數要用到```int()```函數,當然一個嚴格程序這里還需要對輸入進行驗證的,這個等你熟悉了Python之后可以自行完成. ``` import random score = 0 target = random.randint(1, 10) print(score, target) guess_number = int(input('請輸入你要猜的數字:')) ``` ## 判斷用戶輸入對錯 在這里我們就要用到分支結構了,所謂分支結構簡單的來說就是滿足某個條件的時候做某個事情,比如你高考分數大于700,只要你運氣不是特別被,長得不是特別丑,也不作死基本就能去北大清華了;而如果天氣預報說明天下雨的話,十有八九你是會選擇帶傘出門的,畢竟有的人喜歡淋雨不是. 這里我們就要進行判斷,如果用戶輸入的大于目標數,就提示大了,否則提示小了,這里要用到控制模塊中的分支模塊 ![分支模塊](http://upload-images.jianshu.io/upload_images/1108512-caf1db8f7eb77d06.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 同時還會用到數字和邏輯運算分類中的比大小 ![比大小](http://upload-images.jianshu.io/upload_images/1108512-f05b72a3607dd1d8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 這里涉及了邏輯運算和分支結構兩個知識點,大家還記得嗎? ![猜數程序結構](http://upload-images.jianshu.io/upload_images/1108512-3d0133aa6c653eee.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 這樣,用戶第一次輸入的時候,會判斷用戶輸入的數也就是猜的數跟目標數字孰大孰小,如果大了就會提示'大了',如果相等就恭喜,如果小了,就提示'你猜的數太小了',問題是實際猜測中很難一次就猜中的,所以我們需要反復不停的猜測,如果猜錯了就要重新獲取用戶的輸入,一直到猜對 ![不停猜測知道猜對](http://upload-images.jianshu.io/upload_images/1108512-408075f04d314b26.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 不能往下講了,再往下就要用到循環了,循環猜測的過程,我們先不講,回過頭來講python如何實現這一步 首先Python的語法呢,比較有意思,沒有萬惡的大括號,但是有固定的縮寫,雖然tab黨和空格黨有一場世紀之戰,但是作為空格的擁泵,大家跟我一樣用空格就好了.Python中if語句的格式是 ``` if expr: pass else: pass ``` 注意到了嗎,expr和else后面的語句是有四個空格的,同時:冒號是必不可少的,expr代表的是邏輯表達式,關于邏輯表達式呢,隨便找一本關于編程的書都能夠講個五六七八頁,簡單的說就是大小相等的判斷,這里呢就是判斷我們猜的數和目標數的大小 ``` import random score = 0 target = random.randint(1, 10) print(score, target) guess_number = int(input('請輸入你要猜的數字:')) if guess_number > target: print('too big') elif guess_number = target: print('right') else: print('too small') guess_number = int(input('請輸入你要猜的數字:')) ``` ![猜數字](http://upload-images.jianshu.io/upload_images/1108512-716aa3f1a26dc885.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 細心的同學們可能注意到了,我用到的判斷和上面說的不一樣啊,雖然不一樣,也差不多啊,想想有什么不一樣,有什么一樣呢?寫了這么多怪累的,就不詳細說了. >這個時候已經可以猜數了,但是只有一次機會,一次之后即便你讀取了用戶猜的數字,你也沒有反饋的機會了,這樣的游戲肯定是不完整的,雜么辦呢? ## 循環 日常生活中,我們會說把課文抄10遍,我們就知道需要重復執行抄課文10次,那么在Scratch是有循環的結構的 ![重復執行](http://upload-images.jianshu.io/upload_images/1108512-b3cbb323e0ae0412.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 當然如果你想限制猜測的次數可以用這個,如果在規定的次數內沒有猜到,就扣分,這也很可以,然而這里我想做的是讓用戶不停的猜測直到猜對為止. 比如隔壁村的王二狗跟俺們村的李翠花約定,在湖邊見面,不見不散,那么王二狗只能一個人孤零零的在湖邊等著,直到俺們村的李翠花到了湖邊,也就是說只有滿足了某個條件,才會執行,在這里,就是重復執行,直到猜對了,或者說在沒有猜對的情況下,會讓玩家一直猜猜猜. ![重復執行直到](http://upload-images.jianshu.io/upload_images/1108512-69b310af8c99573d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 好,接下來我們繼續完善我們的程序 ![](http://upload-images.jianshu.io/upload_images/1108512-62d4a078fb7a98c7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 看看上面的程序,我們做了改動,用戶第一次猜測之后,就會判斷```guess_number```與```target```是否相等,如果不相等,就會進入里面的判斷,判斷結束后引導用戶再猜,直到猜對為止. ![改動之后的程序](http://upload-images.jianshu.io/upload_images/1108512-fedb28b6f1914cf2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 我對程序做了一些修改,改動了哪里?為什么?這個程序是否可以繼續優化呢? --- 這里是分割線,思考上述問題5分鐘. --- 然后我們來看Python要怎么做: 這里用到了```while```循環,只要條件成立,就一直做 ``` while expr: pass ``` 下面是代碼 ``` import random score = 0 target = random.randint(1, 10) print(score, target) guess_number = int(input('請輸入你要猜的數字:')) while guess_number != target: if guess_number > target: print('too big') elif guess_number == target: print('right') else: print('too small') guess_number = int(input('請輸入你要猜的數字:')) print('恭喜你蒙對了') ``` ![程序運行結果](http://upload-images.jianshu.io/upload_images/1108512-2b486a457c0167c1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 判斷用戶是否繼續玩 這里就要再次詢問用戶,到這里呢,其實基本的功能已經完成了,后面完善成為完整的猜數游戲呢,還是要用到循環,重復執行某些步驟,然后就是給得分變量賦值,你能猜到怎么做嗎? 歡迎大家投稿,過幾天我公布答案.
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看