Python 我正在尝试定义一个函数来将字符串大写,而不使用预定义的函数 def所有大写字母: x=0 lst=[] 当x=97时: 第一个附加(chr(ord(s[x])-32)) x+=1 其他: x+=1 打印(“.join(lst)) lst
出于某种原因,它说字符串索引超出范围,但我不确定原因。只要将其设置为Python 我正在尝试定义一个函数来将字符串大写,而不使用预定义的函数 def所有大写字母: x=0 lst=[] 当x=97时: 第一个附加(chr(ord(s[x])-32)) x+=1 其他: x+=1 打印(“.join(lst)) lst,python,Python,出于某种原因,它说字符串索引超出范围,但我不确定原因。只要将其设置为,而x如果索引从0开始,则在while循环中包含len 因此,按如下方式更改while循环: def All_uppercase(s): x=0 lst=[] while x<=len(s): if ord(str(s)[x])>=97: lst.append(chr(ord(s[x])-32)) x+=1 els
,而x如果索引从0开始,则在while循环中包含len
因此,按如下方式更改while循环:
def All_uppercase(s):
x=0
lst=[]
while x<=len(s):
if ord(str(s)[x])>=97:
lst.append(chr(ord(s[x])-32))
x+=1
else:
x+=1
print("".join(lst))
lst
while xwhile x除了其他评论者已经建议的之外,你应该避免使用像97和32这样的“神奇”数字。下面是一个更具python风格的解决方案:
while x<len(s):
def所有大写字母:
shift=ord('A')-ord('A'))
返回“”。如果函数“a”不返回任何内容,则加入(chr(ord(c)+shift)。此外,对于代码>=97的任何非字母字符,函数都会失败。
while x<=len(s):
while x<len(s):
def all_uppercase(s):
shift = ord('A') - ord('a')
return ''.join(chr(ord(c) + shift) if 'a' <= c <= 'z' else c
for c in s)
all_uppercase('Hello, world!')
#'HELLO, WORLD!'