簡體   English   中英

當 IF 語句為假時為變量賦值會導致 Python 中的錯誤

[英]Assigning value to variable when IF statement is false causes error in Python

我正在用 Python 編寫一個函數,它應該在字符串中搜索子字符串,然后將子字符串的索引分配給變量。 如果未找到子字符串,我想將 -1 分配給變量以用作其他地方的停止代碼。 但我得到一個我不明白的錯誤。 這是代碼的簡化版本:

test = "abc"
search_str = "z"
index_search_str = test.index(search_str) if search_str in test else index_search_str = -1

如果我運行這段代碼, index_search_str的值應該是-1,但是我得到了這個錯誤(使用 PyCharm):

 index_search_str = test.index(search_str) if search_str in test else index_search_str = -1
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?

但是,如果我將= -1更改為:= -1 ,它仍然會出錯。 我錯過了什么?

我認為,在使用三元運算符時,應該返回值。

test = "azbc"
search_str = "z"
index_search_str = test.index(search_str) if search_str in test else -1

print(index_search_str)    # print value maybe  "1"

您不能在一行語句中分配變量

test = "abc"
search_str = "z"
index_search_str = test.index(search_str) if search_str in test else -1

您的代碼有語法錯誤。

我認為你需要這樣的東西:

test = "abc"
search_str = "z"
if search_str in test:
    print("match")
    index_search_str = test.index(search_str)
    print(index_search_str)
else :
    print("not match")
    index_search_str = -1
    print(index_search_str)

“不匹配”
“-1”

test = "abc"
search_str = "c"
if search_str in test:
    print("match")
    index_search_str = test.index(search_str)
    print(index_search_str)
else :
    print("not match")
    index_search_str = -1
    print(index_search_str)

匹配
2

只需使用str.find ......它會完全按照您默認的方式執行。

>>> test = "abc"
>>> print(test.find('z'))
-1

>>> print(test.find('b'))
1

嘗試

index_search_str = test.index(search_str) if search_str in test else -1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM