Stuck with loops in python - only returning first value

丶灬走出姿态 提交于 2020-01-22 02:04:40

问题


I am a beginner in Python trying to make a function that will capitalize all of the values with an even index, and make lowercase all of the values with an odd index.

I have been struggling repeatedly with for loops only giving me the first value. I have also tried with while loops. However I am curious if there is a way to make it work with for loops (do I need a '+=1' somewhere?)

def func1(x):
    for (a,b) in enumerate (x):
         if a%2 == 0:
              return b.upper()
         else:
              return b.lower()


func1('Testing Testing')

>>>'T'

回答1:


Functions end as soon as a return is reached. You'll need to return once at the end instead of inside the loop:

def func1(x):
  # The string to work on
  new_str = ""

  for (a,b) in enumerate (x):
    # Add to the new string instead of returning immediately
    if a%2 == 0:
      new_str += b.upper()
    else:
      new_str += b.lower()

  # Then return the complete string
  return new_str



回答2:


You are returning after first iteration.

Try the following:

def func1(x):
    result = ''
    for (a,b) in enumerate (x):
         if a%2 == 0:
              result += b.upper()
         else:
              result += b.lower()
    return result



回答3:


You are returning in the first iteration of the loop.

Append the alphabets in a list and return concatinated. Also add 1 to a while checking condition if you want even index to capitalize as the index starts from 0. Use below example:

    def func1(x):
        result = []
        for (a,b) in enumerate (x):
            if (a+1)%2 == 0:
                result.append(b.upper())
            else:
                result.append(b.lower())
        return "".join(result)


    print func1('Testing Testing')

Output:

    tEsTiNg tEsTiNg



回答4:


You are returning from the function early. you need to collect the data you want to return in a variable.

def func1(x):
returnMe = {}
    for (a,b) in enumerate (x):
         if a%2 == 0:
              returnMe += b.upper()
         else:
              returnMe += b.lower()
return returnMe


func1('Testing Testing')

>>>'T'


来源:https://stackoverflow.com/questions/52118391/stuck-with-loops-in-python-only-returning-first-value

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!