极品召唤兽 发表于 2020-8-9 21:13:52

一道Python编程题求助

等距图是一个没有重复字母,连续或不连续的单词。创建一个接受字符串并返回True或False的函数,具体取决于它是否为“等距图”。

Examples

solution("Algorism") ➞ True

solution("PasSword") ➞ False

solution("Consecutive") ➞ False



这个题,如果我想要取第一个字母,和后面所有的字母比较 是否相同 ,依次比下去,如果相同return false 不相同就比到最后,最后return true怎么实现?

qiuyouzhi 发表于 2020-8-9 21:15:25

def func(str1):
    return all( for each in str1])

极品召唤兽 发表于 2020-8-9 21:19:12

qiuyouzhi 发表于 2020-8-9 21:15


额...好像不太好使....?
这个是什么意思能说说吗??

Twilight6 发表于 2020-8-9 21:35:16

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:36:12

本帖最后由 qiuyouzhi 于 2020-8-9 21:42 编辑

极品召唤兽 发表于 2020-8-9 21:19
额...好像不太好使....?
这个是什么意思能说说吗??

哇,dbq,我看错了...
给你重写一个:
def func(str1):
    return all( else True for each in str1])

极品召唤兽 发表于 2020-8-9 21:38:13

Twilight6 发表于 2020-8-9 21:35
这个可行不

这个是能满足题目要求但是不是我想操作的那种过程
这个是直接set 然后比较长度...(标准答案)

Twilight6 发表于 2020-8-9 21:39:41

极品召唤兽 发表于 2020-8-9 21:38
这个是能满足题目要求但是不是我想操作的那种过程
这个是直接set 然后比较长度...(标准答案)



嗷嗷 没看见你的要求,只看见原题了...

Twilight6 发表于 2020-8-9 21:42:16

极品召唤兽 发表于 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"))

极品召唤兽 发表于 2020-8-9 21:43:54

qiuyouzhi 发表于 2020-8-9 21:36
哇,dbq,我看错了...
给你重写一个:

还是不行耶...

qiuyouzhi 发表于 2020-8-9 21:45:01

极品召唤兽 发表于 2020-8-9 21:43
还是不行耶...

?可以发下你的测试数据吗
我刚才又改了

极品召唤兽 发表于 2020-8-9 21:51:09

Twilight6 发表于 2020-8-9 21:42
区分大小写:




emmm感觉很对...就是没太看懂...能说说啥意思吗..

极品召唤兽 发表于 2020-8-9 21:52:28

qiuyouzhi 发表于 2020-8-9 21:36
哇,dbq,我看错了...
给你重写一个:

这次可以了!!!能解释一下吗QWQ

Twilight6 发表于 2020-8-9 21:54:06

极品召唤兽 发表于 2020-8-9 21:51
emmm感觉很对...就是没太看懂...能说说啥意思吗..


用 for 循环遍历除了你字符串 第一个字符之后的全部字符,依次和 字符串的第一个字符进行比较

只要相等一次,那么 if 条件就成立一次,就会执行 if 下面的代码块,返回 False 反之如果 for 循环全部执行完

都没有一个能使得 if 条件成立,那么就返回 True

qiuyouzhi 发表于 2020-8-9 21:57:14

极品召唤兽 发表于 2020-8-9 21:52
这次可以了!!!能解释一下吗QWQ

遍历字符串(除了第一个字符),如果其中一个字符和第一个字符相等,
则往结果列表里面添加一个False,否则添加一个True,最后判断列表里面是否都由True组成。

极品召唤兽 发表于 2020-8-9 22:04:22

Twilight6 发表于 2020-8-9 21:54
用 for 循环遍历除了你字符串 第一个字符之后的全部字符,依次和 字符串的第一个字符进行比较

只要 ...

...嗯..那就不对了呀..
你这样只是比较了第一个和其他的 是否相同
如果 第四个和第五个字母相同了 输出的依然是true
等距图是一个没有重复字母

极品召唤兽 发表于 2020-8-9 22:07:55

qiuyouzhi 发表于 2020-8-9 21:57
遍历字符串(除了第一个字符),如果其中一个字符和第一个字符相等,
则往结果列表里面添加一个False, ...

额..那也是比较第一个和其他的是否相同的意思喽..
那如果第二个和第四个相同了怎么办

Twilight6 发表于 2020-8-9 22:09:33

极品召唤兽 发表于 2020-8-9 22:04
...嗯..那就不对了呀..
你这样只是比较了第一个和其他的 是否相同
如果 第四个和第五个字母相同了 输出 ...

如果我想要取第一个字母,和后面所有的字母比较 是否相同 ,依次比下去

这是你自己改的啊...你只说第一个字母依次和后面的字母比较

Twilight6 发表于 2020-8-9 22:13:49

极品召唤兽 发表于 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"))

极品召唤兽 发表于 2020-8-9 22:15:43

Twilight6 发表于 2020-8-9 22:09
这是你自己改的啊...你只说第一个字母依次和后面的字母比较

....omg咋是这么理解的...
我是想说一下这个过程 举了一个例子 题目要求还是要满足的呀..

如果我想要取第一个字母,和后面所有的字母比较 是否相同 ,依次比下去,

就是第一个比完了 再拿第二个再比较 比到最后 全部相同了 才能是true..


qiuyouzhi 发表于 2020-8-9 22:18:50

极品召唤兽 发表于 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
查看完整版本: 一道Python编程题求助