[英]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']不可用,但是它將更改為六個”。 為什么這樣做呢?
我想,我必須要改變的not
或in
的一部分,但我不知道。
in
檢查成員身份:當且僅當a
是b
包含的成員時, 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.