鱼C论坛

 找回密码
 立即注册
查看: 3318|回复: 22

[已解决]一道Python编程题求助

[复制链接]
发表于 2020-8-9 21:13:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

Examples

solution("Algorism") ➞ True

solution("PasSword") ➞ False

solution("Consecutive") ➞ False




这个题,如果我想要取第一个字母,和后面所有的字母比较 是否相同 ,依次比下去,如果相同return false 不相同就比到最后,最后return true怎么实现?
最佳答案
2020-8-9 22:13:49
极品召唤兽 发表于 2020-8-9 22:04
...嗯..那就不对了呀..
你这样只是比较了第一个和其他的 是否相同
如果 第四个和第五个字母相同了 输出 ...


那改成这样就好了,原理和之前的差不多一样,但是是全部比较过去了:

不区分大小写:
def solution(string):
    for i in range(len(string)):
        for j in string[i+1:]:
            if string[i].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[i+1:]:
            if string[i] == j:
                return False
    return True

print(solution("Algorism"))
print(solution("PasSword"))
print(solution("Consecutive"))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-9 21:15:25 | 显示全部楼层
def func(str1):
    return all([each == str1[0] for each in str1])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-9 21:19:12 | 显示全部楼层

额...好像不太好使....?
这个是什么意思能说说吗??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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"))

这个可行不
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-9 21:36:12 | 显示全部楼层
本帖最后由 qiuyouzhi 于 2020-8-9 21:42 编辑
极品召唤兽 发表于 2020-8-9 21:19
额...好像不太好使....?
这个是什么意思能说说吗??


哇,dbq,我看错了...
给你重写一个:
def func(str1):
    return all([False if each == str1[0] else True for each in str1[1:]])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-9 21:38:13 | 显示全部楼层

这个是能满足题目要求  但是不是我想操作的那种过程
这个是直接set 然后比较长度...(标准答案)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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



嗷嗷 没看见你的要求,只看见原题了...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


区分大小写:
def solution(string):
    for i in string[1:]:
        if i == string[0]:
            return False
    return True

print(solution("Algorism"))
print(solution("PasSword"))
print(solution("Consecutive"))


不区分大小写:
def solution(string):
    for i in string[1:]:
        if i.lower() == string[0].lower():
            return False
    return True

print(solution("Algorism"))
print(solution("PasSword"))
print(solution("Consecutive"))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-9 21:43:54 | 显示全部楼层
qiuyouzhi 发表于 2020-8-9 21:36
哇,dbq,我看错了...
给你重写一个:

还是不行耶...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-9 21:45:01 | 显示全部楼层

?可以发下你的测试数据吗
我刚才又改了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-9 21:51:09 | 显示全部楼层

emmm感觉很对...就是没太看懂...能说说啥意思吗..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-9 21:52:28 | 显示全部楼层
qiuyouzhi 发表于 2020-8-9 21:36
哇,dbq,我看错了...
给你重写一个:

这次可以了!!!能解释一下吗QWQ
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-9 21:54:06 | 显示全部楼层
极品召唤兽 发表于 2020-8-9 21:51
emmm感觉很对...就是没太看懂...能说说啥意思吗..


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

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

都没有一个能使得 if 条件成立,那么就返回 True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-9 21:57:14 | 显示全部楼层
极品召唤兽 发表于 2020-8-9 21:52
这次可以了!!!能解释一下吗QWQ

遍历字符串(除了第一个字符),如果其中一个字符和第一个字符相等,
则往结果列表里面添加一个False,否则添加一个True,最后判断列表里面是否都由True组成。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

只要 ...

...嗯..那就不对了呀..
你这样只是比较了第一个和其他的 是否相同
如果 第四个和第五个字母相同了 输出的依然是true
等距图是一个没有重复字母
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-9 22:07:55 | 显示全部楼层
qiuyouzhi 发表于 2020-8-9 21:57
遍历字符串(除了第一个字符),如果其中一个字符和第一个字符相等,
则往结果列表里面添加一个False, ...

额..那也是比较第一个和其他的是否相同的意思喽..
那如果第二个和第四个相同了怎么办
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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


这是你自己改的啊...你只说第一个字母依次和后面的字母比较
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-9 22:13:49 | 显示全部楼层    本楼为最佳答案   
极品召唤兽 发表于 2020-8-9 22:04
...嗯..那就不对了呀..
你这样只是比较了第一个和其他的 是否相同
如果 第四个和第五个字母相同了 输出 ...


那改成这样就好了,原理和之前的差不多一样,但是是全部比较过去了:

不区分大小写:
def solution(string):
    for i in range(len(string)):
        for j in string[i+1:]:
            if string[i].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[i+1:]:
            if string[i] == j:
                return False
    return True

print(solution("Algorism"))
print(solution("PasSword"))
print(solution("Consecutive"))

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
极品召唤兽 + 1 + 1 感谢大佬~~

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-9 22:15:43 | 显示全部楼层
Twilight6 发表于 2020-8-9 22:09
这是你自己改的啊...你只说第一个字母依次和后面的字母比较

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

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

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


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[i+1:]:
            if str1[i] == each:
                return False
    return True

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
极品召唤兽 + 1 + 1 谢谢你QWQ加个好友呗

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-11 08:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表