我必须输入一个字符串和一个整数值,并检查该字符串是小写还是大写,并基于此我必须将其递增数字k
。例如,如果k=4
且字符串为'ABab'
,则应给出输出'EFef'
。
这是我的仅用于检查小写字母的代码。不幸的是给了ValueError
。
s=input()
k=int(input())
l=[]
for i in s:
if i.islower():
if 97>=(ord(i)+k)<=122:
l.append(chr(ord(i)+k))
else:
k=k-122
if 97>=(ord(i)+k)<=122:
l.append((chr(ord(i)+k)))
break
else:
continue
print(l)
答案 0 :(得分:1)
回溯显示错误发生的位置。
Traceback (most recent call last):
File "C:/Users/rob/test.py", line 11, in <module>
l.append((chr(ord(i)+k)))
ValueError: chr() arg not in range(0x110000)
您正在向chr
传递参数,该参数不在允许的范围内。如here所述:
该参数的有效范围是从0到1,114,111(0x10FFFF 以16为底)。如果我超出该范围,将引发ValueError。
这是因为您已将k的值更改为(可能)是一个较大的负数:
k=k-122
因此,ord(i)+k
的结果通常也是负数。负数不在允许的范围内,因此对chr
的调用失败。
您的代码还有很多其他问题,如果我为这个问题写“我的解决方案”,我认为您不会学到很多。首先,您可能要看的另一件事是:
if 97>=(ord(i)+k)<=122:
没有做您想做的,您可能想要做:
if 97<=(ord(i)+k)<=122: