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

Python校验输入首字母大写报错及不符合要求终止程序实现咨询

问题排查与解决方案

报错原因

  • 你代码里的x是存储5条用户输入的列表类型,isupper()是字符串专属方法,无法直接作用于列表对象,因此触发AttributeError。
  • 代码里写的false是错误写法,Python的布尔假值是首字母大写的False,未定义的小写false会触发变量不存在的报错。

功能实现思路

要校验输入是否符合「每个单词首字母大写其余小写」的格式,直接用Python字符串内置的istitle()方法即可,该方法对Robin Hood返回True,对robin hood、Robin hood这类不符合格式的内容返回False。
我们可以在用户输入完成后遍历所有输入内容,只要有一条不符合规则就直接终止程序。

修正后完整代码

# 预设的电影列表
lst = ['Spidey', 'Castaway', 'Avengers', 'GI. JOE', 'Shallow']
# 存储用户输入的电影
x = []
print("请输入至少5部你最喜欢的电影\n")
# 循环获取5次输入
for i in range(5):
    input_str = input("电影名:")
    x.append(input_str)
# 校验所有输入的首字母格式
for movie_name in x:
    if not movie_name.istitle():
        print("输入格式不符合要求,程序终止。很高兴认识你!")
        exit() # 校验不通过直接终止程序
# 找两个列表的交集
lst_as_set = set(lst)
intersection = lst_as_set.intersection(x)
intersection_as_lst = list(intersection)

if len(intersection_as_lst) == 3:
    Ques = input("\n你喜欢他的部分电影吗?:")
    if Ques == "yes":
        print(f"\n你们有{len(intersection_as_lst)}部共同喜欢的电影,分别是:")
        print(intersection_as_lst)
    elif Ques == "no":
        print("我们不合适。我不喜欢:")
        s = set(x) - set(lst)
        print(s)
elif len(intersection_as_lst) == 0:
    Ques = input("你喜欢他的部分电影吗?:")
    if Ques == "yes" or Ques == "no":
        print("我们不合适。很高兴认识你!")

运行说明

只要用户输入的任意一个电影名不符合首字母大写规范,程序会直接输出提示后终止,不会执行后续的交集判断逻辑。

内容的提问来源于stack exchange,提问作者viora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:15:01