繁体   English   中英

循环字符串难度python 3

[英]Looping String difficulty python 3

此代码的功能是将出现在偶数索引中的字母和小写出现在奇数索引中的字母大写。 此外,如果单词之间出现空格,则索引必须重置为0.如您所见,第一个和第二个单词正确执行。 然而,第三个词是不正确的。 取代C和S分别为大写,分别为0和2,A和E大写。

string = 'Weird string case'
result = ''
i=0
for m in string:
    if(i%2==0):
       result = result+m.upper()
       i+=1
    elif(m==' '):
       result = result + m
       i=0
    else:
       result = result + m.lower()
       i+=1
    print(result)

电流输出

 WeIrD StRiNg cAsE

预期产出

 WeIrD StRiNg CaSe

你应该先测试m是否为空格; 否则,如果在出现的空间i是即使这样i就不会被重置:

string = 'Weird string case'
result = ''
i=0
for m in string:
    if(m==' '):
       result = result + m
       i=0
    elif(i%2==0):
       result = result+m.upper()
       i+=1
    else:
       result = result + m.lower()
       i+=1
    print(result)

小掉头可以解决问题:

string = 'Weird string case'
result = ''
i=0
for m in string:
    if(i%2!=0):
       result = result+m.lower()
       i+=1
    elif(m==' '):
       result = result + m
       i=0
    else:
       result = result + m.upper()
       i+=1
    print(result)

或者有一个双线,(可能是一个很长的tho),一个列表理解和一个map和两个join s:

s=''.join([i.lower() if idx%2 else i.upper() for idx,i in enumerate(string)]).split()
print(' '.join(map(lambda x: x.swapcase() if x[0].islower() else x,s)))

这似乎已经解决了。

string = 'Weird string case'
result = ''
i=0
for m in string:
    if(i%2==0):
       result = result+m.upper()
       i+=1
    elif(m==' '):
       result = result + m
       i=1
    else:
       result = result + m.lower()
       i+=1
    print(result)

我没有被明确要求,但我们可以先对字符串进行标记。 这使得个别单词成为案例:

import re
string = 'Weird string case'
result = ''
for word in re.split("\\s+", string):
    for index, char in enumerate(word, 1):
        result = result+char.lower() if index%2==0 else result + char.upper()
    result += " "
print(result)

常规的string.split(“”)也可以。 我刚刚使用正则表达式进行演示。

如果我们列举 string ,我们可以修剪下来我们if, elif, else语句只是一个if, else这将是not i % 2我们upper.()else更低。 我们可以将它们附加到列表中,然后使用''.join(res)来打印最终产品。 map也是一个选项和列表理解

地图

s = 'Weird string case'
res = list(map(lambda x: x.upper() if not s.index(x) % 2 else x.lower(), s))
print(''.join(res))

列表理解

res = [v.upper() if not i % 2 else v.lower() for i, v in enumerate(s)]
print(''.join(res))

完整循环:

res = []

for i, v in enumerate(s):
    if not i % 2:
        res.append(v.upper())
    else:
        res.append(v.lower())

print(''.join(res))
 WeIrD StRiNg cAsE 

我会用另一个清单

    string = 'Weird string case'
    words = string.split(" ") #This creates a list of substrings from your original string
    result = ''
    for word in words:
        for m in string:
            if(i%2==0):
               result = result+m.upper()
               i+=1
            elif(m==' '):
               result = result + m
               i=0
            else:
               result = result + m.lower()
               i+=1
           `enter code here` print(result)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM