我练习条件和逻辑运算符。
如何制作以下摇滚,纸张,剪刀游戏打印"这不是有效的对象选择。"如果玩家1输入无效对象,玩家1输入后立即?现在,只有两个玩家都输入了一个对象,才会打印该字符串。
此外,是否有任何建议使下面的代码更优雅?
player1 = input('Player 1? ')
player2 = input('Player 2? ')
if (player1.lower() == 'rock' and
player2.lower() == 'rock'):
print('Tie.')
elif (player1.lower() == 'rock' and
player2.lower() == 'paper'):
print('Player 2 wins.')
elif (player1.lower() == 'rock' and
player2.lower() == 'scissors'):
print('Player 1 wins.')
elif (player1.lower() == 'paper' and
player2.lower() == 'paper'):
print('Tie.')
elif (player1.lower() == 'paper' and
player2.lower() == 'scissors'):
print('Player 2 wins.')
elif (player1.lower() == 'paper' and
player2.lower() == 'rock'):
print('Player 1 wins.')
elif (player1.lower() == 'scissors' and
player2.lower() == 'scissors'):
print('Tie.')
elif (player1.lower() == 'scissors' and
player2.lower() == 'rock'):
print('Player 2 wins.')
elif (player1.lower() == 'scissors' and
player2.lower() == 'paper'):
print('Player 1 wins.')
else:
print('This is not a valid object selection.')
答案 0 :(得分:0)
一个函数如何询问每个玩家他们的选择?只有当玩家输入有效选择时,才允许他们通过代码继续进行逻辑陈述。
def get_choice(Player_number):
print('Player', Player_number, 'please enter your choice: ', end='')
while True:
choice = input().lower() #lower converts input to all lowercase
if choice in ('rock', 'paper', 'scissors'): # check if valid choice
return choice # if valid return choice
else:
print('Incorrect choice, try again: ', end='') # else print this and start loop agan
player1 = get_choice('1')
player2 = get_choice('2')
对于逻辑部分,请注意,如果player1 choice == player 2 choice,则会替换代码中的3个elif块,即
if player1 == player2:
print('tie')
现在替换pl == rock和p2 == rock,p1 ==剪刀和p2 ==剪刀,等等。
编辑:
1)如果您将2中的print语句移动到4中的输入内部,则问题是您无法再指定,end =''参数,因为它不适用于输入。正如您所说,它将生成SyntaxError。在终端中以这种方式运行时代码看起来更干净,因为它们都排成一行,但是要自己测试它。
2)结束=''在print语句的末尾打印一个空字符串。你把它与end =' \ n'混淆了打印后打印新行。由于我的方式将光标保持在打印后的同一行,它与输入对齐,使其看起来不错,见上面的问题。请注意默认情况下python中的print语句通过,结束=' \ n'。这就是为什么
print('hello') #same as print('hello', end='\n')
print('world)
hello
world
print('hello', end='')
print('world', end='')
helloworld
3)while True循环总是评估为true。因此,while循环的主体将不断循环 - 但是,它可以通过“返回选择”返回整个功能。功能。如果要达到返回语句所需的逻辑步骤,则保留此函数的唯一方法。在这种情况下,除非选择在该元组中('摇滚','纸张' scisors')它将只打印无效条目再试一次,完成块。但是,如果仍然如此,循环将再次开始并要求用户再次输入。这将重复,直到选择了有效选项。
4)你可以将它连接到player_number上,例如..
print('Player', Player_number + ',' , 'please enter your choice: ', end='')