首页 > 解决方案 > 如果语句未正确打印

问题描述

我不确定为什么,但对于 if 语句,它没有正确打印消息。每当我运行程序时,它只运行 else 语句,而不运行其余的 if 语句

import random
import sys


def main():
    while True:
        aimove = random.randint(1, 3)
        print("|//////////////|")
        print("| 1 - Rock     |")
        print("| 2 - Paper    |")
        print("| 3 - Scissors |")
        print("|//////////////|")
        usermove = input("Choose your move")

        # decides who wins or loses

        if aimove == "1" and usermove == "2":
            print("you won!")
        elif aimove == "1" and usermove == "1":
            print("you tied")
        elif aimove == "1" and usermove == "3":
            print("you lost")
        elif aimove == "2" and usermove == "3":
            print("you won!")
        elif aimove == "2" and usermove == "2":
            print("you tied")
        elif aimove == "2" and usermove == "1":
            print("you lost")
        elif aimove == "3" and usermove == "1":
            print("you won!")
        elif aimove == "3" and usermove == "3":
            print("you tied")
        elif aimove == "3" and usermove == "1":
            print("you lost")
        else:
            sys.exit()

        # Print messages of match

        print("User aimove: " + str(usermove))
        print("Opponent aimove: " + str(aimove))


main()

标签: python-3.x

解决方案


random.randint给出一个整数,而不是一个字符串。因此,如果您将字符串与 int 进行比较,它将永远不会相同。

您可以像 Russ J 在评论中所说的那样删除每个数字周围的引号,或者,您可以将其转换为str()

import random
import sys


def main():
    while True:
        aimove = str(random.randint(1, 3))
        print("|//////////////|")
        print("| 1 - Rock     |")
        print("| 2 - Paper    |")
        print("| 3 - Scissors |")
        print("|//////////////|")
        usermove = input("Choose your move")

        # decides who wins or loses

        if aimove == "1" and usermove == "2":
            print("you won!")
        elif aimove == "1" and usermove == "1":
            print("you tied")
        elif aimove == "1" and usermove == "3":
            print("you lost")
        elif aimove == "2" and usermove == "3":
            print("you won!")
        elif aimove == "2" and usermove == "2":
            print("you tied")
        elif aimove == "2" and usermove == "1":
            print("you lost")
        elif aimove == "3" and usermove == "1":
            print("you won!")
        elif aimove == "3" and usermove == "3":
            print("you tied")
        elif aimove == "3" and usermove == "1":
            print("you lost")
        else:
            sys.exit()

        # Print messages of match

        print("User aimove: " + str(usermove))
        print("Opponent aimove: " + str(aimove))


main()

推荐阅读