angrykola

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

python核心编程习题6-14 
设计一个"石头,剪子,布"游戏,有时又叫"Rochambeau",你小时候可能玩过,下面是规则.你和你的对手,在同一时间做出特定的手势,必须是下面一种手势:石头,剪子,布.胜利者从 
下面的规则中产生,这个规则本身是个悖论. 
(a) 布包石头. 
(b)石头砸剪子, 
(c)剪子剪破布.在你的计算机版本中,用户输入她/他的选项,计算机找一个随机选项,然后由你 
的程序来决定一个胜利者或者平手.注意:最好的算法是尽量少的使用 if 语句.(不用字典)

#使用字典
import random
guess_list = ["石头","剪刀",""] 
guize = [["","石头"],["石头","剪刀"],["剪刀",""]] 
flag = True
while flag:
    people = input('请输入:石头,剪刀,布\n').strip() 
    computer = random.choice(guess_list) 
    if computer == people: 
        print("平手,再玩一次!") 
    elif [computer,people] in guize : 
        print("电脑获胜!" )
        flag = False
    else: 
        print("人获胜!" )
        flag = False
#不使用字典
from random import choice
option = ['石头','剪刀','','石头']
while True:
    computer = choice(option[0:3])
    people = input("请输入:石头、剪刀、布!\n")
    print("电脑输入:%s"%computer)
    if computer == people:
        print("平手,再来一回合。")
    elif option[option.index(people)+1] == computer:
        print("玩家获胜。")
        break
    else:
        print("电脑获胜。")
        break

 将比赛改为三局两胜制:

 1 from random import choice
 2 option = ['石头','剪刀','','石头']
 3 count1 = count2 = 0
 4 while True:
 5     if count1 == 2 or count2 == 2:
 6         if count1>count2 :
 7             print("玩家以总回合%d:%d获得胜利"%(count1,count2))
 8         else:
 9             print("电脑以总回合%d:%d获得胜利"%(count2,count1))
10         break 
11     computer = choice(option[0:3])
12     people = input("请输入:石头、剪刀、布!\n")
13     print("电脑输入:%s"%computer)
14     if computer == people:
15         print("平手,再来一回合。")
16     elif option[option.index(people)+1] == computer:
17         print("此回合玩家获胜,玩家加一分!")
18         count1 += 1
19     else:
20         print("此回合电脑获胜,电脑加一分!")
21         count2 += 1

 

posted on 2013-11-21 19:10  kolaman  阅读(1211)  评论(0)    收藏  举报