1. 程式人生 > >教自己學Python(三)練手小遊戲:不要猜中

教自己學Python(三)練手小遊戲:不要猜中

不要猜中的小遊戲

背景

和朋友閒待著兩個人無聊,都想吃蘋果又都不想洗,想起玩過的一個酒桌上猜數字的遊戲,然後在手機上寫了出來,三局兩勝輸了去洗蘋果……

遊戲介紹

零到99(包括邊界),隨機一個數兩人(N人也可以)輪流猜測,如果沒猜中,新的數將做為邊界,一步步縮小可以猜測的範圍,直到猜中為止,比如隨機數是“32”,螢幕首先打印出:

當前範圍是: 0 --- 100

第一次猜:50,螢幕返回

當前範圍是: 0 --- 50

第二次猜:25,螢幕返回

當前範圍是: 25 --- 50

第N次猜中:32,螢幕返回,並結束迴圈

^_^

準備工作

此前我們的程式碼都是在互動環境中完成的,是時候來點不一樣的了。在學前班裡我們介紹了一些文字編輯器,現在召喚一個你喜歡的,然後開始編寫吧。

多行的Python程式碼稍微有些不同,下面的程式碼可以當做是一個參考。良好的程式碼編寫應該是有縮排的,這樣方面人類閱讀和理解,Python直譯器對縮排的要求是嚴格的,也就是說你必須進行縮排,縮排量通常為’2個空格或者4個空格’,注意不要用’Tab’和4個空格混用,因為不同編輯器可能會對’Tab’的縮排理解不同。

那麼問題來了,什麼時候需要縮排呢?大概像下圖中的縮排一樣:

縮排演示

縮排描述的是屬於關係,每有一層屬於關係就需要縮排一次。

寫好了程式後,比如存為abc.py
在windows中進入相行目錄,比如C盤下的py_ex,在Windows的命令列中輸入:

C:\>python c:\py_ex\abc.py

或者

cd c:\py_ex\abc.py
C:\py_ex\>python abc.py

在Linux或OSX的終端中輸入python + 檔案路徑,比如要執行家目錄內py_ex中的abc.py檔案:

$ python ~/py_ex/abc.py

程式碼(Python3)

下面的程式碼是Python3的,如果是Python2你還需要在import之前再加入一行# -*- coding: utf-8 -*-,來確保程式碼內的中文字元可以執行。

import random

rand_num = random.randint(0, 99)
left = 0
right = 99
while True:
    print('當前範圍是:', left, '---', right)
    test = int(input('再猜一下\n'))
    if test == rand_num:
        print('^_^')
        break
    if test > rand_num:
        right = test
    else:
        left = test

程式碼註解

第一行我們先引入了一個可以產生隨機數的包,這裡我們需要的是整數所以使用random.randint()方法,這個方法接收兩個引數做為左右邊界,返回一個包含邊界的隨機整數。

第六行,一個永恆迴圈來接收N次猜數,如果猜中break跳出迴圈。

第八行的input是一個內建函式用來接收輸入資訊,預設接收到的輸入會是str型別,我們對其進行了強制型別轉換,這裡不嚴謹,沒有進行嚴格的輸入驗證。

如果有疑問

有疑問是正常的,因為像ifwhile這樣的控制語句我們之前並沒有提過,但是沒關係,即使沒有提到過,你也一樣看得懂,不是嗎? 這裡看明白就好,後續的章節我們會詳細介紹。

相關推薦

自己Python遊戲:不要猜中

不要猜中的小遊戲 背景 和朋友閒待著兩個人無聊,都想吃蘋果又都不想洗,想起玩過的一個酒桌上猜數字的遊戲,然後在手機上寫了出來,三局兩勝輸了去洗蘋果…… 遊戲介紹 零到99(包括邊界),隨機一個數兩人(N人也可以)輪流猜測,如果沒猜中,新的數將做為邊界

自己Python基本運算

運算 基本運算 >>> 2 + 2 4 >>> 50 - 5*6 20 >>> (50 - 5*6) / 4 5.0 >>> 8 / 5 1.6 >>> 8 / 4

自己Python程式碼骨架

程式碼骨架 從前面的內容中,我們已經看到Python的一行程式碼寫完之後,不需要額外加一個的;進行說明。在Guido設計語言時,為了避免輸入太多的括號或者關鍵字,Python中使用縮排來區分程式碼塊,建議使用四個空格進行縮排(不要使用Tab和空格混排)。就像我

java基礎python--------列表,元組

 列表:相當於java中的list用法 下標用法與python中的字串相似也可以用-1等負數來表示 也可以使用*重複用法 可以使用in關鍵字用法 也可以求長度:len(list) for迴圈可以遍歷表內元素 列表的方法: 賦值與java中相似,python中可以用切片的方式給

Python------迴圈

一、while迴圈 <1> while迴圈的格式 while 條件: 條件滿足時,做的事情1 條件滿足時,做的事情2 條件滿足時,做的事情3 … demo: i = 0 while i < 5: print(“當前是第%d次執行迴圈” % (i + 1)) print(

跟我一起pythonpython基本資料型別和函式

三元運算: 三元運算(三目運算),是對簡單的條件語句的縮寫。 # 書寫格式 result = 值1 if 條件 else 值2 # 如果條件成立,那麼將 “值1” 賦值給result變數,否則,將“值2”賦值給result變數 if a == 1:

如何一天python之基礎篇

爬蟲 一個最簡單的爬蟲實現 深複製和淺複製 淺複製就是對引用的拷貝(只拷貝父物件) 深複製就是對對物件的資源的拷貝 兩個標籤指向一個空間,改變任何一個標籤,另一個都會隨之改變 如果不想讓引用之間相互影響 可以使用copy模組 淺拷貝

Pythonpython基本數據類型

python基本數據類型數據類型一、Python支持的數據類型1.變量變量是內存中的一塊區域變量的命名:由字母、數字、下劃線組成並且開頭不能時數字python中地址變量與c語言剛好相反,一條數據包含多個標簽:>>> a=1>>> b=1>>> id(a)3

C語言老司機Python

append 設計 sta one list 老板 com oob als 標準數據類型: 共6種:Number(數字),String(字符串),List(列表),Tuple(元組),Sets(集合),Dictionary(字典) 本次學習主要是和數據類型混個臉熟,

兄弟連Python06---- 正則表達式匹配規則

驗證 列表 cas 斜杠 小數點 php 能夠 spa 超過 正則表達式 - 匹配規則 基本模式匹配 一切從最基本的開始。模式,是正則表達式最基本的元素,它們是一組描述字符串特征的字符。模式可以很簡單,由普通的字符串組成,也可以非常復雜,往往用特殊的字符表示一個範圍內的字

通過CPython1關於語言、數值類型和變量

而在 有一種 float char 有用 運行時 復數運算 單獨的數 數值類型 強類型語言,不可能出現“程序執行出錯後仍可繼續執行,並且該錯誤導致的問題使後續執行可能出現任意行為”這類錯誤,這類錯誤的例子,如C裏的緩沖區溢出、Jump到錯誤地址。 弱類型語言,類型檢查更不嚴

通過CPython3列表的常用方法

als 字符 return 變量 函數 rem span 通過 body 查看一個對象的id:id(待查對象)檢查一個數據的數據類型:type(數據或變量)查詢一個序列對象的元素個數:len(序列對象)查看一個類有哪些方法可用:dir(數據或變量或類)查看一個類或函數的使用

跟著文檔Vue——組件基礎

ont err -s fontsize itl IE alert -i -a <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <me

小學生python

下劃線 spm div apu 數據 cno bgp idl pyc 上一節描述了跟python環境安裝相關的,這一節寫變量及命名。 python是用c語言寫的,所以很多c的思想在裏面。 基本的數據類型有整形,浮點型,字符型。 整形 int 浮點型 fl

小學生python

title number per for 結束 小學 r語 法規 row 上一篇中用到了for循環,這一節描述下常用的if語句,for語句,while語句。 1. if語句 cars = [‘bmw‘,‘benz‘,‘byd‘,‘ford‘,‘rowei‘] for c

java基礎python---------------Matplotlib

Matplotlib庫 import matplotlib.pyplot as plt plt.plot([4,1,6,3,8,5]) plt.ylabel("num") plt.savefig(“text”,dpi=600)#dpi:每英寸中包含點的數量,儲存為png檔案,檔案 &n

java基礎python----------numpy

NumPy(底層用c完成的) 是一個開源的Python科學計算基礎庫 一個強大的N維陣列物件ndarray 廣播函式功能 整合C/C++/Fortran程式碼的工具 線性代數、傅立葉變換、隨機數生成等功能 NumPy是SciPy,Pandas等資料處理或科學計算庫的基礎 n

java基礎python----------字典,集合

字典 類似於java中的hashmap 建立字典  使用{}建立字典  使用:指明鍵:值對 my_dict = {'John': 86411234, 'Bob': 86419453,'Mike': 86412387}  鍵必須是不可變的且不重複,值可以是

java基礎python-------------字串

字串 長度:len(string) 重複:*.     string*3== stringstringstring 成員運算子(判斷字串是否為另一個字串的子串):in 列舉字串的每一個成員:for 字串索引:從左往右是從下標0開始,從右往左是從下標-1開始,索引運算子:

java基礎python------------基礎語法

基本物件型別 字串 (string),簡記為 str  使用''或""括起來的一系列字元  整數(integer),簡記為 int 十進位制:21,八進位制:025,十六進位制:0x15  浮點數(float) 1.65,21.0,21.,.21,2.