簡體   English   中英

如何在python中的條件語句中使用“ not”和“ in”

[英]how to use “not” and “in” in conditional statements in python

availableNums=["one","two","three","four","five"]
selectedNumbers=[]
for value in range(0,3):
    selectedNumbers.append(raw_input("Choose a number:"))

if selectedNumbers not in availableNums:
      print("The number "+str(selectedNumbers)+" isn't available/nBut it will be changed to six")

當我運行此代碼並要求輸入數字時,我輸入了列表中可用的數字,但仍然顯示“數字['one','two','3']不可用,但是它將更改為六個”。 為什么這樣做呢?

我想,我必須要改變的notin的一部分,但我不知道。

in檢查成員身份:當且僅當ab 包含的成員時 b a in b為true。

由於availableNums是一個整數元組,所以list的selectedNumbers不是成員。 您似乎想要檢查selectedNumbers是否是availableNums子集

您可以循環檢查每個項目:

for s in selectedNumbers:
    if s not in availableNums
        ....

或者,您可以將它們轉換為集合,如果可以一次檢查所有對象,並且在任何選定數字無效的情況下完全失敗:

if not set(selectedNumbers) < set(availableNums):
    ....

請注意,這里的<應用於子集,是子集運算符。


另外,如注釋中所述, raw_input返回一個字符串,但是您嘗試將其視為整數。 您可以使用int()解析輸入字符串。

selectedNumbers是一個列表。 您正在檢查整個列表是否在availableNums ,而不是在selectedNumbers中的每個數字是否在availableNums

聽起來您想要這樣的東西:

for selectedNumber in selectedNumbers:
    if selectedNumber not in availableNums:
        # selectedNumber from selectedNumbers is not in availableNums

編輯:正如hatshepsut指出的那樣,您的代碼將字符串放置在selectedNumbers ,而不是整數中。 使用input代替raw_input 1或將其轉換為int

1對於Python2。對於Python 3,請參閱python3.x中raw_input()和input()有什么區別?

暫無
暫無

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

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