小儿无赖 发表于 2023-8-5 20:05:52

一个判断的代码,中间的似乎有很多问题

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

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



if a:
    print("True")
else:
    print("False")
中间的代码似乎有大问题,大佬求教

Mike_python小 发表于 2023-8-5 20:06:09

问题:判断一个字符串是否由多个子字符串重复构成,Python交流

你的代码中有一些问题,导致无法正确地判断一个字符串是否由多个子字符串重复构成。下面是对你的代码进行了修改和解释的版本:


x = input("请输入一个由字母构成的字符串:")
length_x = len(x)
a = False

for 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
            break

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


这里的修改主要包括以下几点:

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

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

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

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

如果回答对你有帮助,请给我一个最佳答案!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

学习编程中的Ben 发表于 2023-8-5 20:06:10

问题:一个判断的代码,中间的似乎有很多问题 Python交流

你的代码中存在一些问题,导致无法正确判断一个字符串是否由多个子字符串重复构成。下面是对你的代码进行了修改和解释的版本:

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]) and x == x[:i] * (length_x // i):
            a = True
            break

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


这里的修改主要包括以下几点:

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

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

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

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

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

如果回答对你有帮助,请给我一个最佳答案!{:10_254:}{:10_254:}{:10_254:}

isdkz 发表于 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 for j in i 修改为 x[:i] ,以正确获取子字符串。
3. 将 length_x / i 修改为 length_x // i ,以获取整数结果。

修正后的代码将判断字符串是否由多个子字符串重复构成,并输出相应的结果。

学习编程中的Ben 发表于 2023-8-5 20:07:19

给个最佳答案呗!求你了!!!{:10_254:}
页: [1]
查看完整版本: 一个判断的代码,中间的似乎有很多问题