【问题标题】:If input is equal to string does not work correctly [closed]如果输入等于字符串无法正常工作[关闭]
【发布时间】:2026-02-04 03:55:04
【问题描述】:

当我输入 '*' 时,它可以工作,但使用 'o' 时它不会。我找不到我做错了什么

def trying():    
    player1 = input("Please pick a marker '*' or 'o' ")
    while True:
        if player1.upper() == '*':
            player2='o'
            print("You've choosen " + player1 + ". Player 2 will be " + player2)
            return player1.upper(),player2
        elif player1.upper() == 'o':
            player2='*'
            print("You've choosen " + player1 + ". Player 2 will be " + player2)
            return player1.upper(),player2
        else:
            player1 = input("Please pick a marker '*' or 'o' ")
trying()

【问题讨论】:

  • 你为什么要使用 .upper() ?尝试不使用它。
  • hmm.. 因为 'o' 是小写的?!
  • @Tibebes.M omg 我错过了那部分。谢谢,是的,那是我的错误。我通常使用 lower() 所以我弄糊涂了
  • @XXDIL 我正在使用它,因为在我的任务中据说我需要编写一个同时接受 'O' 和 'o' 的代码,我应该编写 lower()。我的坏

标签: python python-3.x string if-statement


【解决方案1】:

.upper() 表示将小写字母转换为大写字母,其他所有内容保持不变。这就是它适用于* 但不适用于o 的原因。

.upper()替换为.lower(),就可以了!


def trying():    
    player1 = input("Please pick a marker '*' or 'o' ")
    while True:
        if player1.lower() == '*':
            player2='o'
            print("You've choosen " + player1 + ". Player 2 will be " + player2)
            return player1.upper(),player2
        elif player1.lower() == 'o': #o is lowercase
            player2='*'
            print("You've choosen " + player1 + ". Player 2 will be " + player2)
            return player1.upper(),player2
        else:
            player1 = input("Please pick a marker '*' or 'o' ")
trying()

【讨论】:

    【解决方案2】:

    错误在于elif player1.upper() == 'o': 将用户输入转换为大写,然后将其与小写字母o 进行比较。

    解决方案是:

    elif player1.lower() == 'o':
    

    【讨论】: