如果不满足第一个条件,如何打印?

时间:2017-06-08 11:31:01

标签: python-3.x

我练习条件和逻辑运算符。

如何制作以下摇滚,纸张,剪刀游戏打印"这不是有效的对象选择。"如果玩家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.')

1 个答案:

答案 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='')