You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 05:51:27