一道Python编程题求助
等距图是一个没有重复字母,连续或不连续的单词。创建一个接受字符串并返回True或False的函数,具体取决于它是否为“等距图”。Examples
solution("Algorism") ➞ True
solution("PasSword") ➞ False
solution("Consecutive") ➞ False
这个题,如果我想要取第一个字母,和后面所有的字母比较 是否相同 ,依次比下去,如果相同return false 不相同就比到最后,最后return true怎么实现? def func(str1):
return all( for each in str1]) qiuyouzhi 发表于 2020-8-9 21:15
额...好像不太好使....?
这个是什么意思能说说吗?? def solution(string):
return True if len(set(string.lower())) == len(list(string.lower())) else False
print(solution("Algorism"))
print(solution("PasSword"))
print(solution("Consecutive"))
这个可行不 本帖最后由 qiuyouzhi 于 2020-8-9 21:42 编辑
极品召唤兽 发表于 2020-8-9 21:19
额...好像不太好使....?
这个是什么意思能说说吗??
哇,dbq,我看错了...
给你重写一个:
def func(str1):
return all( else True for each in str1]) Twilight6 发表于 2020-8-9 21:35
这个可行不
这个是能满足题目要求但是不是我想操作的那种过程
这个是直接set 然后比较长度...(标准答案) 极品召唤兽 发表于 2020-8-9 21:38
这个是能满足题目要求但是不是我想操作的那种过程
这个是直接set 然后比较长度...(标准答案)
嗷嗷 没看见你的要求,只看见原题了... 极品召唤兽 发表于 2020-8-9 21:38
这个是能满足题目要求但是不是我想操作的那种过程
这个是直接set 然后比较长度...(标准答案)
区分大小写:
def solution(string):
for i in string:
if i == string:
return False
return True
print(solution("Algorism"))
print(solution("PasSword"))
print(solution("Consecutive"))
不区分大小写:
def solution(string):
for i in string:
if i.lower() == string.lower():
return False
return True
print(solution("Algorism"))
print(solution("PasSword"))
print(solution("Consecutive")) qiuyouzhi 发表于 2020-8-9 21:36
哇,dbq,我看错了...
给你重写一个:
还是不行耶... 极品召唤兽 发表于 2020-8-9 21:43
还是不行耶...
?可以发下你的测试数据吗
我刚才又改了 Twilight6 发表于 2020-8-9 21:42
区分大小写:
emmm感觉很对...就是没太看懂...能说说啥意思吗.. qiuyouzhi 发表于 2020-8-9 21:36
哇,dbq,我看错了...
给你重写一个:
这次可以了!!!能解释一下吗QWQ 极品召唤兽 发表于 2020-8-9 21:51
emmm感觉很对...就是没太看懂...能说说啥意思吗..
用 for 循环遍历除了你字符串 第一个字符之后的全部字符,依次和 字符串的第一个字符进行比较
只要相等一次,那么 if 条件就成立一次,就会执行 if 下面的代码块,返回 False 反之如果 for 循环全部执行完
都没有一个能使得 if 条件成立,那么就返回 True 极品召唤兽 发表于 2020-8-9 21:52
这次可以了!!!能解释一下吗QWQ
遍历字符串(除了第一个字符),如果其中一个字符和第一个字符相等,
则往结果列表里面添加一个False,否则添加一个True,最后判断列表里面是否都由True组成。 Twilight6 发表于 2020-8-9 21:54
用 for 循环遍历除了你字符串 第一个字符之后的全部字符,依次和 字符串的第一个字符进行比较
只要 ...
...嗯..那就不对了呀..
你这样只是比较了第一个和其他的 是否相同
如果 第四个和第五个字母相同了 输出的依然是true
等距图是一个没有重复字母 qiuyouzhi 发表于 2020-8-9 21:57
遍历字符串(除了第一个字符),如果其中一个字符和第一个字符相等,
则往结果列表里面添加一个False, ...
额..那也是比较第一个和其他的是否相同的意思喽..
那如果第二个和第四个相同了怎么办 极品召唤兽 发表于 2020-8-9 22:04
...嗯..那就不对了呀..
你这样只是比较了第一个和其他的 是否相同
如果 第四个和第五个字母相同了 输出 ...
如果我想要取第一个字母,和后面所有的字母比较 是否相同 ,依次比下去
这是你自己改的啊...你只说第一个字母依次和后面的字母比较 极品召唤兽 发表于 2020-8-9 22:04
...嗯..那就不对了呀..
你这样只是比较了第一个和其他的 是否相同
如果 第四个和第五个字母相同了 输出 ...
那改成这样就好了,原理和之前的差不多一样,但是是全部比较过去了:
不区分大小写:
def solution(string):
for i in range(len(string)):
for j in string:
if string.lower() == j.lower():
return False
return True
print(solution("Algorism"))
print(solution("PasSword"))
print(solution("Consecutive"))
区分大小写:
def solution(string):
for i in range(len(string)):
for j in string:
if string == j:
return False
return True
print(solution("Algorism"))
print(solution("PasSword"))
print(solution("Consecutive"))
Twilight6 发表于 2020-8-9 22:09
这是你自己改的啊...你只说第一个字母依次和后面的字母比较
....omg咋是这么理解的...
我是想说一下这个过程 举了一个例子 题目要求还是要满足的呀..
如果我想要取第一个字母,和后面所有的字母比较 是否相同 ,依次比下去,
就是第一个比完了 再拿第二个再比较 比到最后 全部相同了 才能是true..
极品召唤兽 发表于 2020-8-9 22:15
....omg咋是这么理解的...
我是想说一下这个过程 举了一个例子 题目要求还是要满足的呀..
def func(str1):
for i in range(len(str1)):
for each in str1:
if str1 == each:
return False
return True
页:
[1]
2