用 chr 和 ord 将每个单词大写
Capitalizing each words with chr and ord
首先我必须从用户那里接收一个字符串。该函数将大写引入的字符串对象。它会使单词以大写字符开头,而所有剩余字符都为小写。这是我所做的:
ssplit = s.split()
for z in s.split():
if ord(z[0]) < 65 or ord(z[0])>90:
l=(chr(ord(z[0])-32))
new = l + ssplit[1:]
print(new)
else:
print(s)
我看不出我做错了什么。
有很多python方法可以为您轻松解决这个问题。例如,str.title()
将大写给定字符串中每个单词的开头。如果你想确保所有其他人都是小写的,你可以先做 str.lower()
然后 str.title()
.
s = 'helLO how ARE YoU'
s.lower()
s.capitalize()
# s = 'Hello How Are You'
按照@Pyer 的建议使用str.title()
很好。如果您需要使用 chr
和 ord
,您应该正确设置变量 - 请参阅代码中的 注释 :
s = "this is a demo text"
ssplit = s.split()
# I dislike magic numbers, simply get them here:
small_a = ord("a") # 97
small_z = ord("z")
cap_a = ord("A") # 65
delta = small_a - cap_a
for z in ssplit : # use ssplit here - you created it explicitly
if small_a <= ord(z[0]) <= small_z:
l = chr(ord(z[0])-delta)
new = l + z[1:] # need z here - not ssplit[1:]
print(new)
else:
print(s)
输出:
This
Is
A
Demo
Text
首先我必须从用户那里接收一个字符串。该函数将大写引入的字符串对象。它会使单词以大写字符开头,而所有剩余字符都为小写。这是我所做的:
ssplit = s.split()
for z in s.split():
if ord(z[0]) < 65 or ord(z[0])>90:
l=(chr(ord(z[0])-32))
new = l + ssplit[1:]
print(new)
else:
print(s)
我看不出我做错了什么。
有很多python方法可以为您轻松解决这个问题。例如,str.title()
将大写给定字符串中每个单词的开头。如果你想确保所有其他人都是小写的,你可以先做 str.lower()
然后 str.title()
.
s = 'helLO how ARE YoU'
s.lower()
s.capitalize()
# s = 'Hello How Are You'
按照@Pyer 的建议使用str.title()
很好。如果您需要使用 chr
和 ord
,您应该正确设置变量 - 请参阅代码中的 注释 :
s = "this is a demo text"
ssplit = s.split()
# I dislike magic numbers, simply get them here:
small_a = ord("a") # 97
small_z = ord("z")
cap_a = ord("A") # 65
delta = small_a - cap_a
for z in ssplit : # use ssplit here - you created it explicitly
if small_a <= ord(z[0]) <= small_z:
l = chr(ord(z[0])-delta)
new = l + z[1:] # need z here - not ssplit[1:]
print(new)
else:
print(s)
输出:
This
Is
A
Demo
Text