在开始提问之前,我想说,我是一名在学校学习 Python 入门类(class)的初学者,因此,如果我的问题措辞不当,我深表歉意,欢迎提出建议。
我正在努力解决的问题是这样的:“创建一个程序,请求用户提供名称列表,并打印以 A 到 I 开头的名称。”
到目前为止,这是我的代码,我还没有弄清楚我做错了什么:
students = input('Enter a list of students: ')
for s in students:
if students[:1] == 'abcdefghiABCDEFGHI':
print(s)
任何答案将不胜感激,感谢您提前抽出时间。
最佳答案
您的问题似乎在这里:
if students[:1] == 'abcdefghiABCDEFGHI':
此检查将始终为假。要使 str1 == str2
为真,字符串必须具有相同的长度,并且具有相同顺序的所有相同字符。但是 students[:-1]
的长度将是零或一个字符,因此它永远不可能等于右侧更长的字符串。要检查该字符是否是长字符串中的任何一个,您可以使用 in
运算符:
if students[:1] in 'abcdefghiABCDEFGHI':
但请注意,如果 students
是空字符串 ''
,这将是正确的,这可能不是您想要的。您可以使用 students[0]
来防止这种情况(空字符串将导致错误而不是误报),但更好的方法是使用 str.startswith
方法如下:
if students.startswith(tuple('abcdefghiABCDEFGHI')):
tuple
调用用于将字符串转换为元组 ('a', 'b', 'c', ...)
- 您可以选择将该元组文字直接放入代码中。您需要参数是一个元组,因为 startswith
(如 ==
)检查任何长度的字符串 - 但将可能的前缀元组交给它会单独检查所有这些前缀,并且如果其中任何一个匹配,则为 true。
此外,进行不区分大小写检查的更常见方法是强制测试字符串采用您想要的大小写;当您必须测试长于一个字符的字符串时,这是一个会派上用场的技巧 - 它的工作原理如下:
if students.upper().startswith(tuple("ABCDEFGHI")):
关于Python迭代程序: print strings in a list that start with a specific character,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33049996/