Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不带len函数的字符串长度_Python_String Length - Fatal编程技术网

Python 不带len函数的字符串长度

Python 不带len函数的字符串长度,python,string-length,Python,String Length,有谁能告诉我,在不使用len()函数或任何字符串方法的情况下,如何获得字符串的长度。请任何人告诉我,因为我正在疯狂地叩头寻找答案。 谢谢。我无法理解为什么需要避免使用len函数,但字符串是不可编辑的。您应该能够做到这一点: strlen = 0 for c in myString: strlen += 1 string=input("Enter a string") a=0 for letter in string: a=a+1 print(a) 简单: string=input(

有谁能告诉我,在不使用
len()
函数或任何字符串方法的情况下,如何获得字符串的长度。请任何人告诉我,因为我正在疯狂地叩头寻找答案。

谢谢。

我无法理解为什么需要避免使用len函数,但字符串是不可编辑的。您应该能够做到这一点:

strlen = 0

for c in myString:
  strlen += 1
string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)
简单:

string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)
“绕口令”

string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)
一些递归解

>>> def get_string_length(s):
...     return 1 + get_string_length(s[1:]) if s else 0
... 
>>> get_string_length("hello world")
11
>>> def get_string_length_gen(s):
...     yield 1 + next(get_string_length_gen(s[1:])) if s else 0
... 
>>> next(get_string_length_gen("hello world"))
11
>>> 
string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)

这是一个奇怪的问题,所以这里有一个奇怪的答案

try:
  for i in itertools.count(): mystring[i]
except IndexError:
  pass
string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)
如果字符串包含新行

>>> s="mys\ntring\n"
>>> re.compile(".",re.DOTALL).subn("",s)[-1]
10
string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)

效率不高但非常简洁:

def string_length(s):    
    if s == '': return 0
    return 1 + string_length(s[1:])
string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)
这里有一个O(1)方法:

string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)
换句话说,它不能通过计算字符来工作,因此1GB字符串的速度应该与1字节字符串的速度一样快

string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)

它的工作原理是查看最后一个字符并从最末端搜索以找到该字符。因为它是最后一个字符,所以它总是在它看起来的第一个地方找到它,基本上总是返回最后一个字符的索引。长度仅比最后一个字符的索引大一个。

这里有一种方法可以通过计算字符串中出现的空字符串的数量来完成此操作:

def strlen(s):
    return s.count('') - 1
string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)

由于
“”.count(“”)返回1,因此必须减去1才能获得字符串的长度。

从字符串中创建一个类似文件的对象,读取整个对象,然后告诉偏移量:

>>> import StringIO
>>> ss = StringIO.StringIO("ABCDEFGHIJ")
>>> ss.read()
'ABCDEFGHIJ'
>>> ss.tell()
10
string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)

您可以使用
for
循环获取字符串的长度

string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)
例如,而不是:

string=input("Enter a string")
print(len(string))
string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)
这样做:

string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)

此代码通过计数直到“”(字符串的结尾)来验证字符串的长度。如果字符串到达结尾,循环将中断并返回字符串的最终长度。

尝试这样做,它非常简单

string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)
def length(object):#Define the length calculation function

    count = 0  #initializing the length to be equal to zero
    object = input() #enter the argument 

    for i in object:
        count=count+1

    print("Length of the string is"+str(count))

length(object)
def calculate_length(a):
    x=0
    for i in a:
       x+=1
    print(x)

这里有一种方法既不使用
len
也不使用迭代:

string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)
>>> a = 'a' * 200000
>>> a.rindex(a[-1]) + 1
200000
要使其适用于没有
rindex
的列表,请使用:

string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)
>>> a = list(range(200000))
>>> a.index(a[-1], -1) + 1
200000
使用while循环

string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)
a = 'string'
count = 0

while True:
    try:
        if a[count]:
            count += 1
    except IndexError as e:
        break

print(count)

python中不使用len函数的字符串长度-

string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)
def strlen(myStr):
    if(myStr==""):
       return 0
    else:
       return 1+strlen(myStr[1:])
创建for循环

string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)
styx=“在不使用镜头功能的情况下如何计算此值” 数字=0 对于styx中的c: 数字=0+1

打印(数字)

嘿,这太酷了,但你能告诉我这在字符串范围内是如何工作的吗?因为我们真的不知道范围,在for循环中,这怎么能解释为整数?字符串基本上是一个字符列表。在这段代码中,它循环遍历字符串中的每个字符,并向计数器中添加1(本例中为长度)。如果您想了解它的工作原理,请在长度+=1行之前添加print(x)。100%确定是这样,因为那里要求不使用
len()
嗨,我怎么能吃东西,但不把食物放进嘴里,静脉输液被认为是作弊请任何人帮帮我,我要发疯了。应该要求作业问题包括学生迄今为止的尝试,否则应该以“作业到目前为止没有提供进展”的精神为理由关闭。提供答案只会获得一些声誉分数,但会使学生的未来分数无效。我认为没有理由投反对票,即使是家庭作业,第一个答案获得16票,这意味着@GlennMaynardIt似乎有些教授希望学生以“错误的方式”做事至于从内部工作中学习……不幸的是,这些程序令人恼火和困惑。如果这是一个促进学习的地方,那么我不同意这是一个坏问题的态度。我同意@mou。如果字符串包含换行符,则不起作用!您需要re.DOTANY标志。
count
是一个
str
方法--bbbzzzzzttttttttjohn Machin:当然,其他任何解决方案都会隐式调用
str
的某个方法。作业只说不要使用
string
方法。
rindex
是一种
str
方法--bbbzzzzzttttttt约翰·梅钦:str
方法有什么问题?OP只是说不要使用
string
方法。这是@gnibbler的代表作的变体。虽然这段代码可能会回答这个问题,但提供关于这段代码为什么和/或如何回答这个问题的额外上下文可以提高其长期价值。这基本上是与现有答案的多重耦合相同的解决方案,更糟糕的是,
if
是完全不必要的(并且表明您不知道在python中如何迭代字符串)。为什么你会对一个5年前的问题给出一个糟糕的答案,而这个问题的答案已经非常详尽了?欢迎来到Stack Overflow!请不要在明显离题/糟糕的问题上发布答案!此外,当发布主要由代码片段组成的答案时,请注意。
number=0+1
如何工作?这个答案是不正确的,而且是多余的,例如,请参见执行与您想要显示的相同的操作。
string=input("Enter a string")
a=0
for letter in string:
  a=a+1
print(a)