2024-03-28 09:30:11 发布
网友
有人能解释一下这个密码有什么问题吗?
str1='"xxx"' print str1 if str1[:1].startswith('"'): if str1[:-1].endswith('"'): print "hi" else: print "condition fails" else: print "bye"
我得到的结果是:
Condition fails
但我希望它改为打印hi。
hi
您正在根据字符串减去最后一个字符进行测试:
>>> '"xxx"'[:-1] '"xxx'
注意最后一个字符"不是切片输出的一部分。
"
我想您只是想测试最后一个字符;使用[-1:]来切片最后一个元素。
[-1:]
不过,这里不需要切片;直接使用str.startswith()和str.endswith()。
str.startswith()
str.endswith()
当你说[:-1]时,你是在剥离最后一个元素。您可以对字符串对象本身应用startswith和endswith,而不是对字符串进行切片,如下所示
[:-1]
startswith
endswith
if str1.startswith('"') and str1.endswith('"'):
所以整个程序变成这样
>>> str1 = '"xxx"' >>> if str1.startswith('"') and str1.endswith('"'): ... print "hi" >>> else: ... print "condition fails" ... hi
更简单的是,使用条件表达式,比如
>>> print("hi" if str1.startswith('"') and str1.endswith('"') else "fails") hi
你要么用
if str1[0] == '"' and str1[-1] == '"'
或者
if str1.startswith('"') and str1.endswith('"')
但不要将startswith/endswith一起切分和检查,否则你会切掉你想要的。。。
您正在根据字符串减去最后一个字符进行测试:
注意最后一个字符
"
不是切片输出的一部分。我想您只是想测试最后一个字符;使用
[-1:]
来切片最后一个元素。不过,这里不需要切片;直接使用
str.startswith()
和str.endswith()
。当你说
[:-1]
时,你是在剥离最后一个元素。您可以对字符串对象本身应用startswith
和endswith
,而不是对字符串进行切片,如下所示所以整个程序变成这样
更简单的是,使用条件表达式,比如
你要么用
或者
但不要将startswith/endswith一起切分和检查,否则你会切掉你想要的。。。
相关问题 更多 >
编程相关推荐