星期五, 6月 08, 2012

A、B 猜數字 (Python 版練習)

一個古老的遊戲,猜一組不重覆的四位數字。A表位置相同的數字個數,B表數字相同,但位置不同的個數。
以前國中剛畢業開始學電腦時是用古老的 QuickBasic 來寫,現在剛好在學Python, 改用 Python 來練習這個簡單的小題目,而且似乎可以比 QuickBasic 少寫好幾行。

以下為Python 2.7版中撰寫
# -*- coding: utf-8 -*-
import random
import os
ST=[]
t=0
while t<4 :
    tem=str(random.randrange(0,9))
    if not (tem in ST):
        ST.append(tem)
        t+=1
#宣告一個ST,存放亂數產生要猜的一組不重覆的四位數{
time=1
while True:
    print u"猜第%d次。\n請輸入一個不重覆的四位數字或輸入'STOP'以退出遊戲:" %time
    A=0
    B=0
    input_s=raw_input()
    if "STOP" in input_s.upper():
        print u"離開遊戲! 正確答案為 %s" % "".join(str(n) for n in ST)
        break
    else:
        try:
            int(input_s)    #測試是否輸入的為數字,若非會產生列外處理
            if "".join(str(n) for n in ST)==input_s: #猜到數字,結束遊戲
                print u"Good Job!! 共猜了 %d 次" %time
                break
            elif len(input_s) != 4:
                print u"錯誤! 不正確的長度!\n"
            else:   #未猜到,計算與目標數字的差異
                for tem in range(4):
                    if ST[tem] == input_s[tem]: #包括、且位置相符
                        A+=1
                    if input_s[tem] in ST:  #計算包括的數字,所以需再減去A的總合,才是僅包括,但位置不同的數量
                        B+=1
                print "%d A\t%d B" % (A,B-A)
                time+=1
        except:
            print u"錯誤! 內含非數字的字串\n"
os.system("pause")
創用 CC 授權條款
瑀的貓、田園與電腦點點滴滴何崧瑀製作,以創用CC 姓名標示-非商業性-禁止改作 3.0 台灣 授權條款釋出。