|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本意是将输入的字符串中的数字转换成前一位英文字符的后n位英文,如果超过z就重新从a开始排.就比如输入"a1b2",转换后就应该输出"abbd",输入"z1"就输出"za"
但当我输入字符串如,"a1b2c3"时输出的结果只有"abbd","c3"不见了,将数组num打印出来也只有"abbdc"这是为什么?
s = input("请按规则输入一个字符串(下标为偶数输入小写英文字符,奇数则输入数字):")
num = []
for i in range(len(s)-1):
if i % 2 == 0:
num.append(s[i])
if i % 2 != 0:
if int(ord(s[i-1]))+int(s[i]) <= 122:
num.append(chr(int(ord(s[i-1]))+int(s[i])))
if int(ord(s[i-1]))+int(s[i]) > 122:
num.append(chr(int(ord(s[i-1])+int(s[i]))-26))
for j in range(len(num)-1):
print(num[j],end = "")
问题出在第一个for循环中的范围选择上,应该将范围改为 range(len(s)) ,而不是 range(len(s)-1) 。因为 len(s)-1 的范围会导致最后一个字符被漏掉。修改后的代码如下:
- s = input("请按规则输入一个字符串(下标为偶数输入小写英文字符,奇数则输入数字):")
- num = []
- for i in range(len(s)):
- if i % 2 == 0:
- num.append(s[ i])
- if i % 2 != 0:
- if int(ord(s[i-1]))+int(s[ i]) <= 122:
- num.append(chr(int(ord(s[i-1]))+int(s[ i])))
- if int(ord(s[i-1]))+int(s[ i]) > 122:
- num.append(chr(int(ord(s[i-1])+int(s[ i]))-26))
- for j in range(len(num)):
- print(num[j], end="")
复制代码
这样修改后,输入字符串"a1b2c3"的输出结果就会包含"c3"了。
|
|