gpt4 book ai didi

python - 号码流检测

转载 作者:行者123 更新时间:2023-12-04 17:31:43 24 4
gpt4 key购买 nike

如何创建一个函数 NumberStream(str),它接受传递的 str 参数,其中将包含数字 2 到 9,并确定是否存在至少 N 长度的连续数字流其中 N 是实际数字值。

如果是,程序应该返回字符串 true,否则,程序应该返回字符串 false。例如:如果 str 是“6539923335”,那么程序应该返回字符串 true,因为存在长度为 3 的连续 3 流。

我已经编写了代码,但需要进行一些更改才能按预期执行:

def NumberStream(str):
global j
l = len(str)
count = 0
res = str[0]
print("Length of the string is ", l)
for i in range(l):
count += 1
cur_count = 1
print("Looping")
for j in range(i+1, l):
if str[i] != str[j]:
break
cur_count += 1
print(str[i], " and ", str[j], " with cur_count = ", cur_count, " and count = ", count)
if str[i] == str[j-1] and str[j-1] == cur_count:
return


print(NumberStream("6539923335"))

最佳答案

您的代码几乎是正确的。但首先我强烈建议你不要使用内置函数作为变量名。通过使用名称 str,您覆盖了函数 str(),因此显示的代码无法运行。您所要做的就是在 return 之前的比较中放置一个 str(cur_count) 而不是直接变量。否则,您将整数与字符串进行比较,它将始终返回 False。为此,您必须将变量名 str 更改为其他名称,例如 string 代码如下所示:

def NumberStream(string):
global j
l = len(string)
count = 0
res = string[0]
print("Length of the string is ", l)
for i in range(l):
count += 1
cur_count = 1
print("Looping")
for j in range(i+1, l):
if string[i] != string[j]:
break
cur_count += 1
print(string[i], " and ", string[j], " with cur_count = ", cur_count, " and count = ", count)
if string[i] == string[j-1] and string[j-1] == str(cur_count):
return "True"
return "False"


print(NumberStream("6539923335"))

这里有一些其他的解决方案:

一个非常简单的解决方案是只生成连续数字的数量作为字符串并测试它们是否在字符串中。

test_str = "6539923335"

def NumberStream(input_str):
for i in range(10):
consec_num = str(i)*i
if consec_num in input_str:
print("Found", consec_num)
return "True"
return "False"

print(NumberStream(test_str))

或者,如果您想使用 for 循环来完成此操作:

test_str = "6539923335"

def NumberStream(input_str):
consec_count = 1
for j, number in enumerate(input_str):
if j == 0:
continue
if number == input_str[j-1]:
consec_count += 1
else:
consec_count = 1
if str(consec_count) == number:
print ("Found consecutive numbers:", number)
return "True"
return

NumberStream(test_str)

关于python - 号码流检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59036027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com