如何修复以下Python代码冻结问题?

时间:2018-05-08 12:12:40

标签: python python-3.x

我有一个Python问题,我需要将输入作为函数中的字符串,并需要返回一个字符串,其中每个替换字母是一个小案例和大写案例的序列。例如:传递给函数的字符串:AmsTerdam然后返回的字符串应为AmStErDaM。它可以从任何情况开始,即小案或大小写。

我还处于Python的学习阶段并提出了以下内容,但不知何故,当我尝试执行时,代码挂起。有人可以帮我解决这个问题吗?

def myfunc(NAME='AmsTerdam'):
    leng=len(NAME)
    ind=1
    newlist=[]
    while ind <= leng:
        if ind%2==0:
            newlist.append(NAME[ind-1].upper())
        else:
            newlist.append(NAME[ind-1].lower())
    str(mylist)   # Can we typecast a list to a string?
    return newlist

OUT=myfunc('Ankitkumarsharma')
print('Output: {}'.format(OUT))

如果无法完成类型转换,以下是否正确?

def myfunc(NAME='AmsTerdam'):
    leng=len(NAME)
    ind=1
    newstr=''
    while ind <= leng:
        if ind%2==0:
            newstr=newstr+NAME[ind-1].upper()
        else:
            newstr=newstr+NAME[ind-1].lower()
    return newstr

OUT=myfunc('AmsTerdam')
print('Output: {}'.format(OUT))

2 个答案:

答案 0 :(得分:1)

你本质上是写了一个真正的循环,没有休息条件。

按照你之前的逻辑,我们可以重写你的循环并假设ind=1总是如此,我们得到:

def myfunc(NAME='AmsTerdam'):
  leng=len(NAME)
  newstr=''
  while 1 <= leng:
      if ind%2==0:
          newstr=newstr+NAME[ind-1].upper()
      else:
          newstr=newstr+NAME[ind-1].lower()
  return newstr

这意味着如果len(name) > 1,循环将永远运行。解决这个问题,我们得到以下函数,它将终止。

def myfunc(NAME='AmsTerdam'):
  leng=len(NAME)
  newstr=''
  ind=1
  while ind <= leng:
      if ind%2==0:
          newstr=newstr+NAME[ind-1].upper()
      else:
          newstr=newstr+NAME[ind-1].lower()
      ind+=1
  return newstr

答案 1 :(得分:0)

resolutionAnd