Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么这把石头剪刀总是会回来;平局(抽签)“;?_Python - Fatal编程技术网

Python 为什么这把石头剪刀总是会回来;平局(抽签)“;?

Python 为什么这把石头剪刀总是会回来;平局(抽签)“;?,python,Python,这个程序几乎总是返回“平局(或平局)”。是我还是出了什么事? 这是一个石头剪刀计划,做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?"); computerAn

这个程序几乎总是返回“平局(或平局)”。是我还是出了什么事? 这是一个石头剪刀计划,做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;
#/usr/bin/python
#巨蟒的剪刀
随机输入;
i=1;
c=0;
u=0;
d=0;

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

elif (computerAnswer == "" and userAnswer == "paper"):  
    print("You lost(rock beats scissors)");
    c = c + 1;
修正
computerAnswer==”
,让计算机的答案是石头而不是没有,让用户的答案是剪刀而不是纸。

我更正了第一个“elif”语句,这里的比较是错误的,这扭曲了概率


然后我尝试了几次(Python2.7.3),案例似乎以正确的比例出现。在三个案例中(玩家1胜,玩家2胜,平局),每个案例都有三种可能性,所以你希望赢1/3,输1/3,并且在三分之一的案例中平局(但是我没有做统计测试…。

你应该写一个更好的版本,不使用所有这些ifs。我不是故意的-一个更简洁的程序会更容易调试。使用调试器来查看代码中发生了什么。在
if(i==10)
行之前,可以添加
导入pdb;pdb.set_trace()
然后逐步遍历代码并打印出变量设置为/运行代码位,如
random.randint(1,3)
您可以使用
computerAnswer=random.choice([“岩石”、“纸”、“剪刀”)
,无需分配整数映射。所有这些
,我首先认为你的程序不是Python。以后,请不要用固定版本编辑你问题中的代码。这让后来遇到这个问题的人感到困惑;他们需要能够看到哪里出了问题,以便理解你得到的答案。因此,这不仅仅是一个让人直接解决你的问题的地方;这是一个让人们通过看到别人的问题来学习的地方(试试!)。