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
相关产品推荐
相关产品推荐

