问题
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 return
ing 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