Python中if-else判断异常:输入存在却判定为False
问题原因与解决方法
核心问题
你定义的coins是一个包含单个字典的列表,而你写的判断search not in coins是在检查输入的币种是否属于这个列表的元素——但列表里的唯一元素是整个字典,不是字典里的键(比如Ethereum、Bitcoin这些)。所以不管你输入的币种是不是字典里的键,这个判断都会返回True,触发提示信息。
至于你说改成if search in coins时得到预期结果,这是逻辑错误导致的巧合:因为输入的币种根本不是列表的元素,这个条件会返回False,代码会走到else分支执行赋值操作,看起来像是“正常”,但本质上判断逻辑还是错的。
修正后的代码
要正确检查输入的币种是否是字典的键,需要先从列表中取出字典,再判断键是否存在:
coins = [ {"Ethereum": "ETH-USD", "Bitcoin": "BIT-USD", "Solona": "SOL-USD"} ] def new(): search = input('Enter a coin\n').capitalize() querystring = {"q": " ", "hl": "en", "gl": "US"} # 先取出列表里的字典 coin_dict = coins[0] if search not in coin_dict: print('Please enter a valid coin') else: querystring["q"] = search
额外建议
如果你的场景里coins列表不需要多个字典,直接把它定义成字典会更简洁,避免嵌套带来的判断麻烦:
coins = { "Ethereum": "ETH-USD", "Bitcoin": "BIT-USD", "Solona": "SOL-USD" } def new(): search = input('Enter a coin\n').capitalize() querystring = {"q": " ", "hl": "en", "gl": "US"} if search not in coins: print('Please enter a valid coin') else: querystring["q"] = search
内容的提问来源于stack exchange,提问作者drafty
相关产品推荐
相关产品推荐

