如何让lower()函数生效,在列表中查找用户输入句子里的水果?
问题描述
我是一名学习Python的学生,正在完成课堂作业。我尝试用lower()函数在列表中查找用户输入句子里的水果时遇到了问题,当前代码如下:
# 创建水果列表 fruits = ['banana' , 'apple' , 'orange' , 'kiwi' , 'pineapple', 'peach', 'papaya'] # 欢迎用户并说明水果查找功能 welcome = "Welcome to the fruit finder program, please enter your name: " sentence = input('请输入一句包含水果的句子开始查询: ') # 检查输入是否匹配水果列表,并向用户显示找到的水果数量 if sentence.lower() in fruits: print("以下是在你的句子中找到的水果: ") else: print(input('句子中未找到水果,请重试: '))
运行后输出:
请输入一句包含水果的句子开始查询: Banana Kiwi Pineapple
句子中未找到水果,请重试:
问题分析与解决
你的代码核心问题是:你把整个句子转成小写后去和列表里的单个水果字符串做完全匹配,但用户输入的是包含多个单词的句子,肯定不会和列表里的单个水果条目完全一致,自然会触发else分支。
要实现从句子里提取水果的功能,需要拆分句子里的每个单词,分别转小写后和水果列表比对,修改后的代码如下:
# 创建水果列表 fruits = ['banana' , 'apple' , 'orange' , 'kiwi' , 'pineapple', 'peach', 'papaya'] # 获取用户输入的句子 sentence = input('请输入一句包含水果的句子开始查询: ') # 拆分句子为单词,转小写后筛选出匹配的水果 found_fruits = [fruit for fruit in fruits if fruit in sentence.lower()] # 输出结果 if found_fruits: print("以下是在你的句子中找到的水果: ") for fruit in found_fruits: print(f"- {fruit}") else: print('句子中未找到水果,请重试。')
另外补充两个小问题的修正:
- 原代码里
welcome变量定义后未使用,可以删掉,或者加上name = input(welcome)来完成欢迎流程 - 原
else分支里的print(input(...))会多打印一次用户输入的内容,直接用print('句子中未找到水果,请重试。')即可
内容的提问来源于stack exchange,提问作者schoolcodeqs
相关产品推荐
相关产品推荐

