这是你的作业=P
一些勘误点:
1 - 由于石头、纸和剪刀是常数并且永远不会改变,因此最好遵循 PEP 8 并将它们全部大写。
2 - 不要害怕使用空格来增加代码的可读性。最初,您将所有内容都“整合在一起”。如果它被分解成逻辑部分,阅读起来很好(尝试阅读并遵循 PEP 8 - 遵循 Python 风格指南将极大地帮助你!)
3 - 您最初拥有:
cpu = choice(('rock','paper','scissors'))
哪个制造石头、纸和剪刀STRINGS
——注意''
你的选择吗?如果您想评估随机选择的选项,您需要先实例化您的 CONSTANTS,然后让计算机从这些选项中选择 - 这就是为什么,如果您查看下面的版本,我将您的 CONSTANTS 移到上面cpu = choice()
。
4 - 你有 p1 非常 _ irritating_ (不是你的错,我的字体的错)......我正在阅读它 pl 就像在 pL 中一样......出于这个原因,我会避免用数字命名变量。相反,我做了 player_one (变量名更具描述性,它还可以更具描述性,但对于这个例子来说,它“足够好”)。再次 - PEP 8 是你的朋友!
5 - 很好的第一次尝试!欢迎来到 Python!
注意:我使用的是 2.6/2.7 Python,而不是 3.*,这就是为什么我使用 raw_input() 而不是你的 input()。
from random import choice
ROCK = 1
PAPER = 2
SCISSORS = 3
cpu = choice((ROCK, PAPER, SCISSORS))
player_one = raw_input('-> ROCK, PAPER, or SCISSORS? ')
if str(player_one).upper() == 'ROCK':
player_one = 1
elif str(player_one).upper() == 'PAPER':
player_one = 2
elif str(player_one).upper() == 'SCISSORS':
player_one = 3
else:
print('What the heck did you pick!? Pick a valid option!')
if(cpu == ROCK)and(player_one == ROCK):
print('You Tied')
elif(cpu == ROCK)and(player_one == PAPER):
print('You Win')
elif(cpu == ROCK)and(player_one == SCISSORS):
print('You Lose')
elif(cpu == PAPER)and(player_one == ROCK):
print('You Lose')
elif(cpu == PAPER)and(player_one == PAPER):
print('You Tied')
elif(cpu == PAPER)and(player_one == SCISSORS):
print('You Win')
elif(cpu == SCISSORS)and(player_one == ROCK):
print('You Win')
elif(cpu == SCISSORS)and(player_one == PAPER):
print('You Lose')
elif(cpu == SCISSORS)and(player_one == SCISSORS):
print('You Tied')
UPDATE1: 针对您的最新问题,请查看以下代码。我对代码进行了修改以清理它。我们对“外行”失去了一些可读性,但是一旦你习惯了阅读 Python,我认为这同样干净/清晰。新代码的最后两行向您展示了一种(多种方式)可以实现目标的方式。请记住,您希望在一开始就通过强制比较从 int() 和 str() 进行转换。您不必这样做,所以我所做的是妥协:我tuple
通过执行您之前拥有的 int() 选项并将它们与作为 int() 值表示的 str() 对象组合来创建. 这样,我可以随时通过引用索引值在两者之间进行交换。
想要在字符串中打印出结果的另一种方法是使用前一行空间将 int() 转换回 str(),然后执行以下操作:
print("You picked " + player_one + " and the CPU picked " + cpu)
但是,再次,您必须将您的 player_one 和 cpu 整数转换回它们的字符串。我在下面使用的方法使用元组,因为我更喜欢这种方法而不是你的下意识反应想要你做的事情(这类似于你认为你可能会做的事情)。
from random import choice
ROCK = (1, "ROCK")
PAPER = (2, "PAPER")
SCISSORS = (3, "SCISSORS")
cpu = choice((ROCK, PAPER, SCISSORS))
player_one = raw_input('-> ROCK, PAPER, or SCISSORS? ')
if str(player_one).upper() == 'ROCK':
player_one = (1, "ROCK")
elif str(player_one).upper() == 'PAPER':
player_one = (2, "PAPER")
elif str(player_one).upper() == 'SCISSORS':
player_one = (3, "SCISSORS")
else:
print('What the heck did you pick!? Pick a valid option!')
out_vect = (cpu[0], player_one[0])
OUTCOMES = ('You Tied', 'You Win', 'You Lose')
POSSIBILITIES = (([(1,2), (2, 3), (3, 1)], OUTCOMES[1]), ([(2, 1), (3, 2), (1, 3)], OUTCOMES[2]))
if(out_vect[0] == out_vect[1]):
print OUTCOMES[0]
elif out_vect in POSSIBILITIES[0][0]:
print(POSSIBILITIES[0][1])
elif out_vect in POSSIBILITIES[1][0]:
print(POSSIBILITIES[1][1])
else:
print("~Epic Fail~ in the program!")
result_summary = "You chose " + player_one[1] + " and the CPU chose " + cpu[1]
print result_summary