簡體   English   中英

在python中針對列表測試用戶輸入

[英]Testing user input against a list in python

我需要測試用戶輸入是否與列表元素相同,現在我正在這樣做:

cars = ("red", "yellow", "blue")
guess = str(input())

if guess == cars[1] or guess == cars[2]:
        print("success!")

但我正在處理更大的列表,我的if語句在所有這些檢查中都有很多增長,有沒有辦法引用多個索引,如:

if guess == cars[1] or cars[2]

要么

if guess == cars[1,2,3]

閱讀列表文檔,我發現不可能引用多個索引,我在上面嘗試過,當然會發送語法錯誤。

最簡單的方法是:

if guess in cars:
    ...

但如果你的名單很大,那就太慢了。 然后,您應該將您的汽車列表存儲在一個集合中:

cars_set = set(cars)
....
if guess in cars_set:
    ...

檢查某些東西是否存在是一個集合比檢查它是否在列表中要快得多(但這只會在你有很多項目時出現問題,並且你正在多次進行檢查。)

(編輯:我假設問題代碼中的cars[0]遺漏是偶然的。如果不是,那就用cars[1:]而不是cars 。)

guess in cars使用guess in cars來測試guess是否等於cars的元素:

cars = ("red","yellow","blue")
guess = str(input())

if guess in cars:
        print ("success!")

使用in

if guess in cars:
    print( 'success!' )

另請參閱官方文檔中記錄的序列類型的可能操作。

@Sean Hobbs:首先,你必須為變量索引賦值。

index = 0

您可能希望使用While而創建無限循環,因此您的代碼將如下所示:

while True:

    champ = input("Guess a champion: ")
    champ = str(champ)

    found_champ = False
    for i in listC:
        if champ == i:
            found_champ = True

    if found_champ:
        print("Correct")
    else:
        print("Incorrect")

暫無
暫無

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

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