为什么这把石头剪刀布几乎总是返回"平局(画)"?



这个程序几乎总是返回"It's a draw(or tie)"。是我的问题还是哪里出了问题?这是一个石头剪刀布程序,进行10轮并在最后显示结果。

#!/usr/bin/python  
# RockPaperScissors from Python
import random;
i = 1;
c = 0;
u = 0;
d = 0;
while i <= 10:
    userAnswer = input("Do you choose rock, paper, or scissors?");
    computerAnswer = random.randint(1, 3);
    if (computerAnswer == 1): 
        computerAnswer = "rock";
    elif (computerAnswer == 2): 
        computerAnswer = "paper";
    else: 
        computerAnswer = "scissors";
    if (computerAnswer == "rock" and userAnswer == "paper"):
       print("You won(paper beats rock)");
       u = u + 1;
    elif (computerAnswer == "" and userAnswer == "paper"):  
        print("You lost(rock beats scissors)");
        c = c + 1;
    elif (computerAnswer == "paper" and userAnswer == "rock"):
        print("You lost(paper beats rock)");
        c = c + 1;
    elif (computerAnswer == "paper" and userAnswer == "scissors"):
        print ("You won(scissors beat paper)");
        u = u + 1;
    elif (computerAnswer == "scissors" and userAnswer == "paper"):
        print("You lost(scissors beats paper)");
        c = c + 1;
    elif (computerAnswer == "scissors" and userAnswer == "rock"):
        print("You won(rock beats scissors)");
        u = u + 1;
    else:
        print("It's a draw!");
        d = d + 1;
    if (i == 10):
        print("You won " + str(u) + " times.");
        print("You lost " + str(c) + " times.")
        print("It was a draw " + str(d) + " times.");
    i += 1;

Python版本为3.2(Python 3.2)

您的一个测试用例有几个错误。

elif (computerAnswer == "" and userAnswer == "paper"):  
    print("You lost(rock beats scissors)");
    c = c + 1;

修改computerAnswer == "",使计算机的答案是石头而不是什么都不是,并使用户的答案是剪刀而不是布。

我纠正了第一个"elif"语句,这里的比较是错误的,这扭曲了概率。

然后我只是尝试了几次(Python 2.7.3),并且情况似乎以正确的比例出现。在三种情况(player1赢,player2赢,平局)中,每种情况都有三种可能性,所以你会期望在三分之一的情况下赢1/3,输1/3和平局(但是我没有做统计测试…)。

最新更新