交换字符串中的大写和小写
Swapping uppercase and lowercase in a string
我想将字符串的字符从小写更改为大写。
我的代码在下面,我的代码得到的输出是a
;你能告诉我哪里错了并解释原因吗?
提前致谢
test = "AltERNating"
def to_alternating_case(string):
words = list(string)
for word in words:
if word.isupper() == True:
return word.lower()
else:
return word.upper()
print to_alternating_case(test)
那是因为你的函数 returns 只有第一个字符。我的意思是 return
关键字打破了你的 for
循环。
此外,请注意,不需要通过 运行 words = list(string)
将字符串转换为列表,因为 you can iterate over a string 就像您对列表所做的那样。
如果您正在寻找一种算法解决方案而不是 swapcase()
,那么请以这种方式修改您的方法:
test = "AltERNating"
def to_alternating_case(string):
res = ""
for word in string:
if word.isupper() == True:
res = res + word.lower()
else:
res = res + word.upper()
return res
print to_alternating_case(test)
您的循环遍历输入字符串中的字符。然后从第一次迭代开始 returns。因此,您总是得到一个 1 个字符的 return 值。
test = "AltERNating"
def to_alternating_case(string):
words = list(string)
rval = ''
for c in words:
if word.isupper():
rval += c.lower()
else:
rval += c.upper()
return rval
print to_alternating_case(test)
如果您想反转该字符串的大小写,试试这个:
>>> 'AltERNating'.swapcase()
'aLTernATING'
你应该这样做:
test = "AltERNating"
def to_alternating_case(string):
words = list(string)
newstring = ""
if word.isupper():
newstring += word.lower()
else:
newstring += word.upper()
return alternative
print to_alternating_case(test)
这个问题有两个答案:一个简单的,一个困难的。
简单的
Python 有一个内置函数可以做到这一点,我不太记得它是什么,但是类似于
string.swapcase()
难的
您定义自己的函数。你制作函数的方式是错误的,因为
遍历一个字符串将 return 一个字母一个字母地遍历,而你只是 return 第一个字母而不是继续迭代。
def to_alternating_case(string):
temp = ""
for character in string:
if character.isupper() == True:
temp += character.lower()
else:
temp += word.upper()
return temp
您在遍历单词 alternating 后返回第一个字母表,这不是您所期望的。有一些建议直接循环遍历字符串而不是将其转换为列表,并且表达式 if <variable-name> == True
可以直接简化为 if <variable-name>
。修改后回答如下:
test = "AltERNating"
def to_alternating_case(string):
result = ''
for word in string:
if word.isupper():
result += word.lower()
else:
result += word.upper()
return result
print to_alternating_case(test)
或使用列表理解:
def to_alternating_case(string):
result =[word.lower() if word.isupper() else word.upper() for word in string]
return ''.join(result)
或使用映射、lambda:
def to_alternating_case(string):
result = map(lambda word:word.lower() if word.isupper() else word.upper(), string)
return ''.join(result)
contents='abcdefgasdfadfasdf'
temp=''
ss=list(contents)
for item in range(len(ss)):
if item%2==0:
temp+=ss[item].lower()
else:
temp+=ss[item].upper()
print(temp)
您也可以在函数中添加此代码,并使用 return 键
代替打印
string=input("enter string:")
temp=''
ss=list(string)
for item in range(len(ss)):
if item%2==0:
temp+=ss[item].lower()
else:
temp+=ss[item].upper()
print(temp)
这是困难方法的简短形式:
alt_case = lambda s : ''.join([c.upper() if c.islower() else c.lower() for c in s])
print(alt_case('AltERNating'))
由于我一直在寻找制作全上弦或全下弦交替大小写的解决方案,这里是这个问题的解决方案:
alt_case = lambda s : ''.join([c.upper() if i%2 == 0 else c.lower() for i, c in enumerate(s)])
print(alt_case('alternating'))
def myfunc(string):
i=0
newstring=''
for x in string:
if i%2==0:
newstring=newstring+x.lower()
else:
newstring=newstring+x.upper()
i+=1
return newstring
你可以使用swapcase()方法
string_name.swapcase()
或者你可以有点花哨并使用 list comprehension
string = "thE big BROWN FoX JuMPeD oVEr thE LAZY Dog"
y = "".join([val.upper() if val.islower() else val.lower() for val in string])
print(y)
>>> 'THe BIG brown fOx jUmpEd OveR THe lazy dOG'
这不使用任何 'pythonic' 方法,并使用 ASCII 以基本逻辑格式给出答案:
sentence = 'aWESOME is cODING'
words = sentence.split(' ')
sentence = ' '.join(reversed(words))
ans =''
for s in sentence:
if ord(s) >= 97 and ord(s) <= 122:
ans = ans + chr(ord(s) - 32)
elif ord(s) >= 65 and ord(s) <= 90 :
ans = ans + chr(ord(s) + 32)
else :
ans += ' '
print(ans)
因此,输出将是:Coding IS Awesome
我想将字符串的字符从小写更改为大写。
我的代码在下面,我的代码得到的输出是a
;你能告诉我哪里错了并解释原因吗?
提前致谢
test = "AltERNating"
def to_alternating_case(string):
words = list(string)
for word in words:
if word.isupper() == True:
return word.lower()
else:
return word.upper()
print to_alternating_case(test)
那是因为你的函数 returns 只有第一个字符。我的意思是 return
关键字打破了你的 for
循环。
此外,请注意,不需要通过 运行 words = list(string)
将字符串转换为列表,因为 you can iterate over a string 就像您对列表所做的那样。
如果您正在寻找一种算法解决方案而不是 swapcase()
,那么请以这种方式修改您的方法:
test = "AltERNating"
def to_alternating_case(string):
res = ""
for word in string:
if word.isupper() == True:
res = res + word.lower()
else:
res = res + word.upper()
return res
print to_alternating_case(test)
您的循环遍历输入字符串中的字符。然后从第一次迭代开始 returns。因此,您总是得到一个 1 个字符的 return 值。
test = "AltERNating"
def to_alternating_case(string):
words = list(string)
rval = ''
for c in words:
if word.isupper():
rval += c.lower()
else:
rval += c.upper()
return rval
print to_alternating_case(test)
如果您想反转该字符串的大小写,试试这个:
>>> 'AltERNating'.swapcase()
'aLTernATING'
你应该这样做:
test = "AltERNating"
def to_alternating_case(string):
words = list(string)
newstring = ""
if word.isupper():
newstring += word.lower()
else:
newstring += word.upper()
return alternative
print to_alternating_case(test)
这个问题有两个答案:一个简单的,一个困难的。
简单的
Python 有一个内置函数可以做到这一点,我不太记得它是什么,但是类似于
string.swapcase()
难的
您定义自己的函数。你制作函数的方式是错误的,因为 遍历一个字符串将 return 一个字母一个字母地遍历,而你只是 return 第一个字母而不是继续迭代。
def to_alternating_case(string):
temp = ""
for character in string:
if character.isupper() == True:
temp += character.lower()
else:
temp += word.upper()
return temp
您在遍历单词 alternating 后返回第一个字母表,这不是您所期望的。有一些建议直接循环遍历字符串而不是将其转换为列表,并且表达式 if <variable-name> == True
可以直接简化为 if <variable-name>
。修改后回答如下:
test = "AltERNating"
def to_alternating_case(string):
result = ''
for word in string:
if word.isupper():
result += word.lower()
else:
result += word.upper()
return result
print to_alternating_case(test)
或使用列表理解:
def to_alternating_case(string):
result =[word.lower() if word.isupper() else word.upper() for word in string]
return ''.join(result)
或使用映射、lambda:
def to_alternating_case(string):
result = map(lambda word:word.lower() if word.isupper() else word.upper(), string)
return ''.join(result)
contents='abcdefgasdfadfasdf'
temp=''
ss=list(contents)
for item in range(len(ss)):
if item%2==0:
temp+=ss[item].lower()
else:
temp+=ss[item].upper()
print(temp)
您也可以在函数中添加此代码,并使用 return 键
代替打印string=input("enter string:")
temp=''
ss=list(string)
for item in range(len(ss)):
if item%2==0:
temp+=ss[item].lower()
else:
temp+=ss[item].upper()
print(temp)
这是困难方法的简短形式:
alt_case = lambda s : ''.join([c.upper() if c.islower() else c.lower() for c in s])
print(alt_case('AltERNating'))
由于我一直在寻找制作全上弦或全下弦交替大小写的解决方案,这里是这个问题的解决方案:
alt_case = lambda s : ''.join([c.upper() if i%2 == 0 else c.lower() for i, c in enumerate(s)])
print(alt_case('alternating'))
def myfunc(string):
i=0
newstring=''
for x in string:
if i%2==0:
newstring=newstring+x.lower()
else:
newstring=newstring+x.upper()
i+=1
return newstring
你可以使用swapcase()方法
string_name.swapcase()
或者你可以有点花哨并使用 list comprehension
string = "thE big BROWN FoX JuMPeD oVEr thE LAZY Dog"
y = "".join([val.upper() if val.islower() else val.lower() for val in string])
print(y)
>>> 'THe BIG brown fOx jUmpEd OveR THe lazy dOG'
这不使用任何 'pythonic' 方法,并使用 ASCII 以基本逻辑格式给出答案:
sentence = 'aWESOME is cODING'
words = sentence.split(' ')
sentence = ' '.join(reversed(words))
ans =''
for s in sentence:
if ord(s) >= 97 and ord(s) <= 122:
ans = ans + chr(ord(s) - 32)
elif ord(s) >= 65 and ord(s) <= 90 :
ans = ans + chr(ord(s) + 32)
else :
ans += ' '
print(ans)
因此,输出将是:Coding IS Awesome