这段代码应该接受一个字符串输入并输出另一个字符串,它只是输入字符串的修改版本。我不能让它工作。
应该输出一个字符串,其中每个字母是输入字符串的下一个字母。但是在运行代码时,它只输出相同的输入字符串而不是修改后的字符串。
def str_changer(string):
string_list = list(string)
alphabets = 'abcdefghijklmnopqrstuvwxyz'
positions = []
for letter in string_list:
positions.append(alphabets.index(letter))
for each in positions:
each = each + 1
for each in string_list:
string_list[string_list.index(each)] =
alphabets[positions[string_list.index(each)]]
another = ''.join(string_list)
return another
lmao = raw_input('Enter somin\'')
print str_changer(lmao)
答案 0 :(得分:7)
您只需 1行:
即可s = 'abcdz'
print(''.join(chr(ord(letter) + 1) if letter != 'z' else 'a' for letter in s))
# bcdea
<强>演示强>:
>>> ord('a')
97
>>> ord('b')
98
>>> chr(ord('a') + 1)
'b'
答案 1 :(得分:3)
这对你有用。您应该使用%
来核算z
。
重点是你不需要明确地建立一个职位列表。
def str_changer(string):
string_list = list(string)
alphabets = 'abcdefghijklmnopqrstuvwxyz'
new_string_list = []
for letter in string_list:
new_string_list.append(alphabets[(alphabets.index(letter)+1) % len(alphabets)])
return ''.join(new_string_list)
lmao = raw_input('Enter somin\'')
print str_changer(lmao)