我正在为一个班级创建一个石头,布,剪刀游戏。作为游戏的一部分,我需要有一个武器菜单显示到屏幕上,供用户选择。然后计算机将从列表中随机选择一种武器。我面临的问题(我相信)是列表项的范围从0,2,而我的菜单项列表1,3。我已经搜索了几个小时,但是我不理解我在网上读到的复杂的东西,所以我不确定如何应用它们。
# 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语句。我意识到这些都需要改变。我的主要问题是将用户输入与计算机的随机列表选择进行比较的逻辑。
发布于 2016-07-28 22:49:24
您需要小心处理变量的内容:
# 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)可能会防止您的错误。在声明变量时不要偷懒!;)
发布于 2016-07-28 22:46:26
在if语句中,似乎是将变量computer (一个字符串)与一个整数进行比较。您可以指定computer,因此computer是以下类型之一:["Rock", "Paper", "Scissors"]。但是,在if语句中,您可以说:if computer == 1:来将其与person进行比较( person变量的方法与此相同;在将其与整数进行比较之前,需要为其分配一个字符串)。
你只需要确保你是在比较苹果和苹果
发布于 2016-07-28 22:51:22
与字符串比较,而不是与数字比较,如下所示
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 = Falsehttps://stackoverflow.com/questions/38639528
复制相似问题