string.find()在Python中找不到第一个字符

string.find()在Python中找不到第一个字符,python,string,pycharm,Python,String,Pycharm,我正在尝试制作一个刽子手风格的游戏,它在大多数情况下都是有效的……我只是无法让单词在其中找到第一个字符(例如,如果单词像“hello”,我输入“h”,它就不起作用,但如果我输入任何其他字符,它就会起作用) 这是我的密码: import os def clear(): os.system("clear") def chooseWord(): return input("Player 1, please choose a word: ")

我正在尝试制作一个刽子手风格的游戏,它在大多数情况下都是有效的……我只是无法让单词在其中找到第一个字符(例如,如果单词像“hello”,我输入“h”,它就不起作用,但如果我输入任何其他字符,它就会起作用)

这是我的密码:

import os

def clear():
    os.system("clear")

def chooseWord():
    return input("Player 1, please choose a word: ")

def guessWord():
   return input("Player 2, please guess a character: ")

word = chooseWord().lower()
characters = len(word)
clear()
print(f"The word has {characters} characters!")
chances = 3
print(word)

guessedCorrectly = guessWord().lower()

if word.find(guessedCorrectly):
    print("Hi")
else:
    print("hi")

find
返回搜索字符串出现的字符串中的第一个索引,如果没有,则返回
-1
。由于Python中的字符串索引是基于零的,
find
如果搜索字符串出现在第一个字符中,则返回
0
,并且
0
为假y。您可以显式地将其与0进行比较,而不是直接将索引用作条件:

如果word.find(猜测正确)>=0:
打印(“找到此字符”)
其他:
打印(“未找到此字符”)

find
返回字符串中出现搜索字符串的第一个索引,如果没有,则返回
-1
。由于Python中的字符串索引是基于零的,
find
如果搜索字符串出现在第一个字符中,则返回
0
,并且
0
为假y。您可以显式地将其与0进行比较,而不是直接将索引用作条件:

如果word.find(猜测正确)>=0:
打印(“找到此字符”)
其他:
打印(“未找到此字符”)
find()
返回匹配字符串的索引,而不是布尔值。索引
0
为假,因此当匹配位于字符串开头时,将其视为布尔值将失败

由于您不关心索引,请在操作符中使用

if guessedCorrectly in word:
find()
返回匹配字符串的索引,而不是布尔值。索引
0
为假,因此当匹配位于字符串开头时,将其视为布尔值将失败

由于您不关心索引,请在
操作符中使用

if guessedCorrectly in word:
str.find()返回字符串中子字符串的第一个索引匹配项。如果找不到子字符串,则返回一个。只需更换状况部件。因此,您的代码应该如下所示:

import os

# def clear():
#     os.system("clear")

def chooseWord():
    return input("Player 1, please choose a word: ")

def guessWord():
   return input("Player 2, please guess a character: ")


if __name__=="__main__":
    word = chooseWord().lower()
    characters = len(word)
    # os.system("clear")
    print(f"The word has {characters} characters!")
    chances = 3
    # print(word)

    guessedCorrectly = guessWord().lower()
    print(guessedCorrectly)

    if not (word.find(guessedCorrectly)==-1): #that means there is a substring match!!!
        print("Yes")
    else:
        print("no")
str.find()返回字符串中子字符串的第一个索引匹配项。如果找不到子字符串,则返回一个。只需更换状况部件。因此,您的代码应该如下所示:

import os

# def clear():
#     os.system("clear")

def chooseWord():
    return input("Player 1, please choose a word: ")

def guessWord():
   return input("Player 2, please guess a character: ")


if __name__=="__main__":
    word = chooseWord().lower()
    characters = len(word)
    # os.system("clear")
    print(f"The word has {characters} characters!")
    chances = 3
    # print(word)

    guessedCorrectly = guessWord().lower()
    print(guessedCorrectly)

    if not (word.find(guessedCorrectly)==-1): #that means there is a substring match!!!
        print("Yes")
    else:
        print("no")

word.find不返回true或false,而是返回索引。Hello中H的索引是0,在if/else语句中恰好映射为False。试用

if guessedCorrectly in word:

word.find不返回true或false,而是返回索引。Hello中H的索引是0,在if/else语句中恰好映射为False。试用

if guessedCorrectly in word:

你为什么不试试这个:

if guessedCorrectly in word: 
    print("Hi")
else:
    print("hi")

你为什么不试试这个:

if guessedCorrectly in word: 
    print("Hi")
else:
    print("hi")

输出是什么?它是否返回-1或任何其他整数?Mureinik是正确的。但是如果在word中正确猜测,可以使用
哪个将返回true或false输出是什么?它是否返回-1或任何其他整数?Mureinik是正确的。但是如果猜对了,可以使用
,它将返回true或false我想你的意思是“返回负数”
不是(xxx=-1)
可以简化为
xxx!=-1
是的,但它们之间没有区别,这只是一种可读的方式:我想这只是个人风格,但我总是来自
=
not更可读
我想你的意思是“返回负一”
not(xxx==-1)
可以简化为
xxx!=-1
是的,但它们之间没有区别,这只是一种可读的方式:我想这只是个人风格,但我总是来自
=
更可读