@panda77

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

pythonのコードに関して

if res !=-1:

こちらの文が表している意味を教えていただけませんでしょうか。
(-1が何の役割があるのかわかりません。)

下記コードの全文となります。

str=input("文字列を入力してください。")
key=input("検索する文字列を入力してください。")

res=str.find(key)

if res !=-1:
print(str,"の",res,"の位置に", key,"が見つかりました。")
else:
print(str,"の中に", key,"が見つかりません。")

このコード返し
文字列を入力してください。こんばんわ
検索する文字列を入力してください。わ
こんばんわ の 4 の位置に わ が見つかりました。

恐れ入りますが、ご教示ください。
よろしくお願いいたします。

0 likes

4Answer

findメソッドは、対象の文字列の中に、検索したい文字列が存在しなかった場合、-1を返す仕様になっています。
なので、if res != -1というのは、「検索したい文字列が存在した場合」という条件になります。

4Like

Pythonの文字列メソッド find()は、指定した部分文字列が見つからない場合には -1 を返します。
なので、 if res != -1: の行は res の値が -1 でない場合(つまり、keystr の中に存在する場合)に該当します。その場合、keystr の中に見つかった位置(res)と共にメッセージを出力します。逆に、res の値が -1 の場合(つまり、keystr の中に存在しない場合)は、keystr の中に見つからなかったというメッセージを出力します。

この -1 は、 find() メソッドが部分文字列を見つけられなかったことを示す特殊な値として使用されています。

1Like

findメソッドが-1を返す場合があることは、容易に想像できたと思いますが、ご自身で調べられた内容も記載されるとよいと思います。

0Like

str.findの戻り値に関する知識が必要になります。
以下が公式ドキュメントになりますが、公式ドキュメントの前に少しだけ例を見せたらわかると思います。
https://docs.python.org/ja/3/library/stdtypes.html#str.find

s = 'I am Sam'

print(s.find('Sam'))
# 5 指定sh多文字列のスタート位置が文字列の最初を0として5番目に見つかったよ

print(s.find('XXX'))
# -1 指定した文字列が見つからなかった

という意味になります。

ということは、

if res !=-1:の意味

は「指定した文字列が見つからなかったら」という条件分岐になっています。

0Like

Your answer might help someone💌