如何解决python中字符串字符之间的不等式
我是 StackOverflow 的新手,如果我的格式有误,请原谅我。
我正在尝试从字符串中提取遵循字母顺序的最大子字符串(变量名称为“longest_string”)(即 a,b,x,y,z 有效,但 a,c,b 无效) (变量名's')。
我试图做的是创建一个循环,循环遍历 's' 中的每个字符,并将字符串 s 的第一个字符分配给变量 ' current_value' 并将其添加到名为 'strings' 的列表中。然后,我比较后续字符以查看该字符是否大于或等于 current_value。如果是,则将其添加到“strings”,如果不是,则将初始“strings”列表分配给“longest_string' 列表并刷新变量 'current_value' 和 'strings'。每次后续字符小于 'current_value' 时,将当前 'strings' 的长度与 'longest_string' 和最长的一个被指定为“longest_string”。
我的理解是 Python 假设 26 个英文字符中的第一个字母是最小的(即 'a' > 'z' 将返回 False)。但是,当我运行以下代码时:
s = 'zcbobobegghakl'
longest_string = None
current_value = None
strings = []
for i in s:
if not current_value:
current_value = i
strings.append(i)
continue
if i >= current_value:
strings.append(i)
if i < current_value:
if not longest_string or len(longest_string) < len(strings):
longest_string = strings
current_value = i
strings = []
print(longest_string)
我得到了这个输出:
['o','b','o','e','g','h']
为什么字符 'b' 被分配到与 'o' 相同的字符串中,显然 'b' > 'o' 将返回 False 从而使第二个 IF 语句为 False,它不会执行首先是第二个 IF 语句?
解决方法
尝试将其添加到循环的开头。也许这会给你一些见解?
...
for i in s:
print(i,current_value,strings)
if not current_value:
...
为什么字符 'b' 被分配到与 'o' 相同的字符串中
current_value
只会减少,遇到第一个 b
后会继续累积,直到找到 a
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。