不吃辣的雾都人 发表于 2023-2-22 10:57:58

第29节,最后一题求助!

string = input("请输入一个由字母构成的字符串: ")
string_len = len(string)
text = ""

for i in range(0,string_len//2+1):
    if string_len % (i+1) == 0:
      test = string
      if string.count(text) == string_len / (i+1):
            print("True")
            break
else:
    print("False")


为啥我算出来结果永远是True呢?{:5_94:}

isdkz 发表于 2023-2-22 11:10:17

本帖最后由 isdkz 于 2023-2-22 11:11 编辑

你的代码中有一个变量名错误,导致输出结果永远是 "True"。具体来说,你在判断字符串是否是重复子串时,将子串赋值给了 "test" 变量,但在统计子串在原始字符串中出现的次数时,却使用了错误的变量名 "text"。

将变量名 "text" 改为 "test" 后,代码就可以正确地输出 "True" 或 "False" 了。以下是修改后的代码:
string = input("请输入一个由字母构成的字符串: ")
string_len = len(string)

for i in range(0, string_len // 2 + 1):
    if string_len % (i+1) == 0:
      test = string
      if string.count(test) == string_len // (i+1):
            print("True")
            break
else:
    print("False")

chinajz 发表于 2023-2-22 22:51:29

本帖最后由 chinajz 于 2023-2-22 22:52 编辑

拼写错误
test = string
改成
text = string

sfqxx 发表于 2023-2-26 15:15:12

因为变量名错误,下次需要注意哦,把test改成text即可
string = input("请输入一个由字母构成的字符串: ")
string_len = len(string)

for i in range(0, string_len // 2 + 1):
    if string_len % (i+1) == 0:
      test = string
      if string.count(test) == string_len // (i+1):
            print("True")
            break
else:
    print("False")
页: [1]
查看完整版本: 第29节,最后一题求助!