卡在 python 中的循环 - 只返回第一个值
Stuck with loops in python - only returning first value
我是 Python 的初学者,我试图创建一个函数,将所有具有偶数索引的值大写,并将所有具有奇数索引的值小写。
我一直在与 for 循环反复斗争,只给我第一个值。我也尝试过 while 循环。但是我很好奇是否有办法让它与 for 循环一起工作(我需要在某处使用 '+=1' 吗?)
def func1(x):
for (a,b) in enumerate (x):
if a%2 == 0:
return b.upper()
else:
return b.lower()
func1('Testing Testing')
>>>'T'
您正在 return
第一次迭代后。
尝试以下操作:
def func1(x):
result = ''
for (a,b) in enumerate (x):
if a%2 == 0:
result += b.upper()
else:
result += b.lower()
return result
函数在达到 return
后立即结束。你需要 return 一次在最后而不是在循环内:
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
您return提早离开了这个功能。您需要在变量中收集您想要 return 的数据。
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'
您正在 return 循环的第一次迭代中。
在列表中附加字母并 return 连接起来。如果您希望索引从 0 开始时甚至索引都大写,请在检查条件时将 1
添加到 a
。使用下面的示例:
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')
输出:
tEsTiNg tEsTiNg
您也可以使用生成器,尽管它更高级一些。
def fun1(x):
for (a,b) in enumerate (x):
if a%2 == 0:
yield b.upper()
else:
yield b.lower()
def func1(x):
return [i for i in fun1(x)]
func1('Testing Testing')
我是 Python 的初学者,我试图创建一个函数,将所有具有偶数索引的值大写,并将所有具有奇数索引的值小写。
我一直在与 for 循环反复斗争,只给我第一个值。我也尝试过 while 循环。但是我很好奇是否有办法让它与 for 循环一起工作(我需要在某处使用 '+=1' 吗?)
def func1(x):
for (a,b) in enumerate (x):
if a%2 == 0:
return b.upper()
else:
return b.lower()
func1('Testing Testing')
>>>'T'
您正在 return
第一次迭代后。
尝试以下操作:
def func1(x):
result = ''
for (a,b) in enumerate (x):
if a%2 == 0:
result += b.upper()
else:
result += b.lower()
return result
函数在达到 return
后立即结束。你需要 return 一次在最后而不是在循环内:
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
您return提早离开了这个功能。您需要在变量中收集您想要 return 的数据。
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'
您正在 return 循环的第一次迭代中。
在列表中附加字母并 return 连接起来。如果您希望索引从 0 开始时甚至索引都大写,请在检查条件时将 1
添加到 a
。使用下面的示例:
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')
输出:
tEsTiNg tEsTiNg
您也可以使用生成器,尽管它更高级一些。
def fun1(x):
for (a,b) in enumerate (x):
if a%2 == 0:
yield b.upper()
else:
yield b.lower()
def func1(x):
return [i for i in fun1(x)]
func1('Testing Testing')