1. 程式人生 > >Python 猜數字遊戲

Python 猜數字遊戲

遊戲內容:猜數字遊戲

遊戲過程描述

  1. 程式執行起來,隨機在某個範圍內選擇一個整數。
  2. 提示使用者輸入數字,也就是猜程式隨即選的那個數字。
  3. 程式將使用者輸入的數字與自己選定的對比,一樣則使用者完成遊戲,否則繼續猜。
  4. 使用次數少的使用者得勝.

分析

在任何形式的程式開發之前,不管是大還是小,都要進行分析。即根據功能需求,將不同功能點進行分解。從而確定開發過程。我們現在做一個很小的程式,也是這樣來做。

隨機選擇一個數

要實現隨機選擇一個數字,可以使用python中的一個隨機函式:random。

>>> import random  #這個是必須的,因為不是內建函式
>>> dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', 'WichmannHill', '_BuiltinMethodType', '_MethodType', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_acos', '_ceil', '_cos', '_e', '_exp', '_hashlib', '_hexlify', '_inst', '_log', '_pi', '_random', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'division', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'jumpahead', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
>>> help(random.randint)

Help on method randint in module random:

randint(self, a, b) method of random.Random instance
    Return random integer in range [a, b], including both end points.

隨機整數:

>>> import random
>>> random.randint(0,99)
21

隨機選取0到100間的偶數:

>>> import random
>>> random.randrange(0, 101, 2)
42

隨機浮點數:

>>> import random
>>> random.random()
0.85415370477785668
>>> random.uniform(1, 10)
5.4221167969800881

隨機字元:

>>> import random
>>> random.choice('hiekay.github.io')
'g'

多個字元中選取特定數量的字元:

>>> import random
random.sample('hiekay.github.io',3)
['w', 's', 'b']

隨機選取字串:

>>> import random
>>> random.choice ( ['apple', 'pear', 'peach', 'orange', 'lemon'] )
'lemon'

**洗牌:**把原有的順序打亂,按照隨機順序排列

>>> import random
>>> items = [1, 2, 3, 4, 5, 6]
>>> random.shuffle(items)
>>> items
[3, 2, 5, 6, 4, 1]

程式碼

#!/usr/bin/env python
#coding:utf-8

import random

number = random.randint(1,100)

print "請輸入一個100以內的自然數:"

input_number = raw_input()

if number == int(input_number):
    print "猜對了,這個數是:"
    print number
else:
    print "錯了。"

上面的程式已經能夠基本走通,但是,還有很多缺陷。

最明顯的就是隻能讓人猜一次,不能多次。怎麼修改,能夠多次猜呢?動動腦筋之後看程式碼,或者看官在自己的程式碼上改改,能不能實現多次猜測?

另外,能不能增強一些友好性呢,讓使用者知道自己輸入的數是大了,還是小了。

根據上述修改想法,新程式碼如下:

#!/usr/bin/env python
#coding:utf-8

import random

number = random.randint(1,100)

print "請輸入一個100以內的自然數:"

input_number = raw_input()

if number == int(input_number):
    print "猜對了,這個數是:"
    print number
elif number > int(input_number):
    print "小了"
    input_number = raw_input()
elif number < int(input_number):
    print "大了"
    input_number = raw_input()
else:
    print "錯了。"

升級:

#! /user/bin/env python
#coding:utf-8
import random

number = random.randint(1,100)
i = 1
while i==1:
    print "請輸入一個你猜的數字"
    unumber = raw_input();


    if int(unumber) > number:
        print "大了"
    elif int(unumber) < number:
        print "小了"
    elif int(unumber) == number:
        print "對了"
        i=2
    else:
        print "請輸入數字"