首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将用户输入与随机选择的列表项进行比较- Python

将用户输入与随机选择的列表项进行比较- Python
EN

Stack Overflow用户
提问于 2016-07-28 22:37:50
回答 4查看 542关注 0票数 2

我正在为一个班级创建一个石头,布,剪刀游戏。作为游戏的一部分,我需要有一个武器菜单显示到屏幕上,供用户选择。然后计算机将从列表中随机选择一种武器。我面临的问题(我相信)是列表项的范围从0,2,而我的菜单项列表1,3。我已经搜索了几个小时,但是我不理解我在网上读到的复杂的东西,所以我不确定如何应用它们。

代码语言:javascript
复制
# random integer
from random import randint

# list for weapon
WEAPON = ["Rock", "Paper", "Scissors"]

# one player mode
def onePlayer():
scoreP = 0
scoreC = 0
again = ""
player = False

print("---------------------------------------------")
print("\n\tPlayer VS Computer")

while player == False:
    print("Weapons:")
    print("1. Rock")
    print("2. Paper")
    print("3. Scissors")
    print("4. Quit")

    player = input("\nSelect your weapon: ")
    if player == "quit" or player == "q" or player == "4":
        player = True
        main()
    else:
        try:
            player = int(player)
            if player == 1:
                player = WEAPON[0]
            elif player == 2:
                player = WEAPON[1]
            elif player == 3:
                player = WEAPON[2]
        except:
            print("please enter a number 1 through 4\n")

    computer = WEAPON[randint(0,2)]

    if player == computer:
        print(player," vs ",computer)
        print("It's a tie!\n")
        print("Player:",scoreP,"\nComputer:",scoreC)
        print("")
    elif player == 1:
        # computer == paper
        if computer == 1:
            print(player," vs ",computer)
            print("Paper covers rock! You lose!\n")
            scoreC = scoreC + 1
            print("Player:",scoreP,"\nComputer:",scoreC)
            print("")
        else:
            print("Rock smashes scissors. You win!\n")
            scoreP = scoreP + 1
            print("Player:",scoreP,"\nComputer:",scoreC)
            print("")
    elif player == 2:
        if computer == 2:
            print(player," vs ",computer)
            print("Scissors cut paper! You lose!\n")
            scoreC = scoreC + 1
            print("Player:",scoreP,"\nComputer:",scoreC)
            print("")
        else:
            print("Paper covers rock. You win!\n")
            scoreP = scoreP + 1
            print("Player:",scoreP,"\nComputer:",scoreC)
            print("")
    elif player == 3:
        if computer == 0:
            print(player," vs ",computer)
            print("Rock smashes scissors! You lose!\n")
            scoreC = scoreC + 1
            print("Player:",scoreP,"\nComputer:",scoreC)
            print("")
        else:
            print("Scissors cut paper. You win!\n")
            scoreP = scoreP + 1
            print("Player:",scoreP,"\nComputer:",scoreC)
            print("")
    #else:
    #    print("Please select a valid play option\n")
    player = False       

请不要介意if/else语句中的print语句。我意识到这些都需要改变。我的主要问题是将用户输入与计算机的随机列表选择进行比较的逻辑。

EN

回答 4

Stack Overflow用户

发布于 2016-07-28 22:49:24

您需要小心处理变量的内容:

代码语言:javascript
复制
# this is storing a string     
computer = WEAPON[randint(0,2)]

# this expects an integer
elif player == 1:
        # computer == paper
        if computer == 1:

这将是你所看到的一些问题的根源。

另外,一般来说,在编码时尽量使用有意义的变量名,并避免将它们重用于一个以上的目的:在这种情况下,像player_weapon和computer_weapon这样的两个新变量(而不是重用player和computer)可能会防止您的错误。在声明变量时不要偷懒!;)

票数 4
EN

Stack Overflow用户

发布于 2016-07-28 22:46:26

在if语句中,似乎是将变量computer (一个字符串)与一个整数进行比较。您可以指定computer,因此computer是以下类型之一:["Rock", "Paper", "Scissors"]。但是,在if语句中,您可以说:if computer == 1:来将其与person进行比较( person变量的方法与此相同;在将其与整数进行比较之前,需要为其分配一个字符串)。

你只需要确保你是在比较苹果和苹果

票数 1
EN

Stack Overflow用户

发布于 2016-07-28 22:51:22

与字符串比较,而不是与数字比较,如下所示

代码语言:javascript
复制
    if player == computer:
        print(player," vs ",computer)
        print("It's a tie!\n")
        print("Player:",scoreP,"\nComputer:",scoreC)
        print("")
    elif player == 'Rock':
        # computer == paper
        if computer == 'Paper':
            print(player," vs ",computer)
            print("Paper covers rock! You lose!\n")
            scoreC = scoreC + 1
            print("Player:",scoreP,"\nComputer:",scoreC)
            print("")
        else:
            print("Rock smashes scissors. You win!\n")
            scoreP = scoreP + 1
            print("Player:",scoreP,"\nComputer:",scoreC)
            print("")
    elif player == 'Paper':
        if computer == 'Scissors':
            print(player," vs ",computer)
            print("Scissors cut paper! You lose!\n")
            scoreC = scoreC + 1
            print("Player:",scoreP,"\nComputer:",scoreC)
            print("")
        else:
            print("Paper covers rock. You win!\n")
            scoreP = scoreP + 1
            print("Player:",scoreP,"\nComputer:",scoreC)
            print("")
    elif player == 'Scissors':
        if computer == 'Rock':
            print(player," vs ",computer)
            print("Rock smashes scissors! You lose!\n")
            scoreC = scoreC + 1
            print("Player:",scoreP,"\nComputer:",scoreC)
            print("")
        else:
            print("Scissors cut paper. You win!\n")
            scoreP = scoreP + 1
            print("Player:",scoreP,"\nComputer:",scoreC)
            print("")
    #else:
    #    print("Please select a valid play option\n")
    player = False
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38639528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档