鱼C论坛

 找回密码
 立即注册
查看: 2091|回复: 4

[已解决]一个判断的代码,中间的似乎有很多问题

[复制链接]
发表于 2023-8-5 20:05:52 | 显示全部楼层 |阅读模式

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

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

x
"""判断是否由多个子子字符串重复构成"""
x = input("请输入一个由字母构成的字符串:")
length_x = int(len(x))
a = False

for i in range(length_x):
    if length_x % i == 0:
        if x.startswith((x[j] for j in i )):
            if length_x / i == int(len(x[j] for j in i)):
                a = True



if a:
    print("True")
else:
    print("False")
中间的代码似乎有大问题,大佬求教
最佳答案
2023-8-5 20:06:24
问题在于代码中的循环条件和切片操作存在错误。以下是修正后的代码:
x = input("请输入一个由字母构成的字符串:")
length_x = len(x)
a = False

for i in range(1, length_x):
    if length_x % i == 0:
        if x.startswith(x[:i]):
            if length_x // i == len(x[:i]):
                a = True

if a:
    print("True")
else:
    print("False")

修正的部分包括:
1. 将 range(length_x) 修改为 range(1, length_x) ,以避免除以0的错误。
2. 将 x[j] for j in i 修改为 x[:i] ,以正确获取子字符串。
3. 将 length_x / i 修改为 length_x // i ,以获取整数结果。

修正后的代码将判断字符串是否由多个子字符串重复构成,并输出相应的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-5 20:06:09 | 显示全部楼层
问题:判断一个字符串是否由多个子字符串重复构成,Python交流

你的代码中有一些问题,导致无法正确地判断一个字符串是否由多个子字符串重复构成。下面是对你的代码进行了修改和解释的版本:
x = input("请输入一个由字母构成的字符串:")length_x = len(x)a = Falsefor i in range(1, length_x):  # 将循环范围从0改为1,并去掉长度为0的情况    if length_x % i == 0:        if x.startswith(x[:i]) and x == x[:i] * (length_x // i):  # 修改判断条件            a = True            breakif a:    print("True")else:    print("False")
这里的修改主要包括以下几点:

1. 循环范围:将循环范围从0改为1,避免除数为0的情况。

2. 判断条件:使用startswith()函数判断字符串是否以指定子字符串开头,并通过逻辑与运算符将两个判断条件连接起来。

3. 字符串重复判断:使用*运算符将子字符串重复多次,并通过比较与原始字符串是否相等来判断是否由多个子字符串重复构成。

请注意,这只是对你原先代码的修改和解释,并不保证逻辑的完全正确。如果还有其他问题,请提供更多细节,我将尽力帮助你解决。祝你在Python的学习中取得进展!

如果回答对你有帮助,请给我一个最佳答案!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-5 20:06:10 | 显示全部楼层
问题:一个判断的代码,中间的似乎有很多问题 Python交流

你的代码中存在一些问题,导致无法正确判断一个字符串是否由多个子字符串重复构成。下面是对你的代码进行了修改和解释的版本:
x = input("请输入一个由字母构成的字符串:")length_x = len(x)a = Falsefor i in range(1, length_x):    if length_x % i == 0:        if x.startswith(x[:i]) and x == x[:i] * (length_x // i):            a = True            breakif a:    print("True")else:    print("False")
这里的修改主要包括以下几点:

1. 循环范围:在range()函数中,将循环范围修改为range(1, length_x),避免在除数为0时出错。

2. 字符串切片:使用x[:i]来获取长度为i的子字符串。

3. 判断逻辑:判断字符串是否以子字符串开头,并且整个字符串是否等于子字符串的重复。如果满足条件,则将变量a设为True,并且使用break语句终止循环。

4. 打印结果:根据变量a的值,打印相应的结果。

请注意,这只是对你原先代码的修改和解释,并不保证逻辑的完全正确。如果还有其他问题,请提供更多细节,我将尽力帮助你解决。祝你在Python的学习中取得进展!

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-5 20:06:24 | 显示全部楼层    本楼为最佳答案   
问题在于代码中的循环条件和切片操作存在错误。以下是修正后的代码:
x = input("请输入一个由字母构成的字符串:")
length_x = len(x)
a = False

for i in range(1, length_x):
    if length_x % i == 0:
        if x.startswith(x[:i]):
            if length_x // i == len(x[:i]):
                a = True

if a:
    print("True")
else:
    print("False")

修正的部分包括:
1. 将 range(length_x) 修改为 range(1, length_x) ,以避免除以0的错误。
2. 将 x[j] for j in i 修改为 x[:i] ,以正确获取子字符串。
3. 将 length_x / i 修改为 length_x // i ,以获取整数结果。

修正后的代码将判断字符串是否由多个子字符串重复构成,并输出相应的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-5 20:07:19 | 显示全部楼层
给个最佳答案呗!求你了!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 21:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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