循环字符串难度python 3

时间:2018-10-05 01:24:42

标签: python string loops

此代码的功能是将出现在偶数索引中的字母大写,并将出现在奇数索引中的字母小写。此外,如果单词之间出现空格,则必须将索引重置为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

6 个答案:

答案 0 :(得分:1)

您应该先测试<?php validateUserSomehow(); $filepath = "/path/to/file/".$_GET['f']; echo '<img src="'.$filepath.'"/>'; ?> 是否为空格;否则,如果m为偶数时出现空格,则i不会被重置:

i

答案 1 :(得分:0)

小的交换可以解决问题:

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)

或者有两条线(可能是很长的话),列表理解和map和两个join

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)))

答案 2 :(得分:0)

这似乎已经解决了。

['192.168.70.19 (tcp/1433)', 
'192.168.70.19 (tcp/1025),192.168.70.223 (tcp/1051),192.168.70.245 (tcp/1025)', 
'192.168.70.19 (tcp/3389),192.168.70.223 (tcp/3389)']

答案 3 :(得分:0)

没有明确要求我,但是我们可以先对字符串进行标记。这样可以区分单个单词:

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(“”)也可以。我只是使用正则表达式进行演示。

答案 4 :(得分:0)

如果我们枚举 string,则可以将if, elif, else的语句精简为if, else,即{{1} }}和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))

答案 5 :(得分:0)

我会使用另一个列表

    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)