在没有内置方法的情况下将字符串转换为大写
Conversion of string to upper case without inbuilt methods
我正在尝试在不使用任何内置函数(ord() 和 char() 除外)的情况下对字符串执行从小写到大写的转换。按照此处另一个线程上呈现的逻辑,我想到了这个。
def uppercase(str_data):
ord('str_data')
str_data = str_data -32
chr('str_data')
return str_data
print(uppercase('abcd'))
但是我得到一个错误输出:TypeError: ord() expected a character, but string of length 8 found.What 我错过了吗?
您需要为输入字符串的每个字符执行 ord()。而不是输入字符串:
def uppercase(str_data):
return ''.join([chr(ord(char) - 32) for char in str_data if ord(char) >= 65])
print(uppercase('abcdé--#'))
>>> ABCDÉ
没有加入:
def uppercase(str_data):
result = ''
for char in str_data:
if ord(char) >= 65:
result += chr(ord(char) - 32)
return result
print(uppercase('abcdé--#λ'))
>>> ABCDÉΛ
在我看来最好的方法是使用一个辅助字符串,代表字母表,如果你不想使用 chr()
和 ord()
:
def toUppercase(s):
alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
result = ''
for x in s:
if x not in alphabet or alphabet.index(x)>=26:
result += x
else:
result += alphabet[alphabet.index(x)+26]
return result
这也处理标点符号,例如 ;
或 .
。
更新:
根据OP的要求,这是一个没有index()
的版本:
def toUppercase(s):
alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
result = ''
for x in s:
for pos in range(52):
if alphabet[pos] == x:
i = pos
if x not in alphabet or i>=26:
result += x
else:
result += alphabet[i+26]
return result
print(toUppercase('abcdj;shjgh'))
ord()- Return 单字符字符串的 Unicode 代码点。
您必须发送一个字符串作为参数。在这里,您发送的字符串 'abcd' 有 4 个字符,这是导致问题的原因。将每个字符分别发送给函数,从而调用函数 4 次以获得结果。
这是一个不使用内置函数将字符串转换为大写的程序:
Str1=input("Enter the string to be converted uppercase: ")
for i in range (0,len(Str1)):
x=ord(Str1[i])
if x>=97 and x<=122:
x=x-32
y=chr(x)
print(y,end="")
下面的简化代码有助于使用简单的计算将小写字母转换为大写 字母
代码:
def toUppercase(string):
convertedCharacter = ''
for i in string:
convertCharacter += chr( ( (ord(i)) -32) )
return convertCharacter
char=input("Enter lowercase word :")
for letter in char:
s=ord(letter)
if s>=97 and s<=122:
print(chr(s-32),end=" ")
def uppercase(str_data):
ord('str_data')
str_data = str_data -32
chr('str_data')
return str_data
print(uppercase('abcd'))
在此代码中,ord 将单个字符作为参数,但您提供了多个字符,这就是它显示错误的原因。一次取一个字符,将其转换为大写,并生成如下所示的单个字符串。
def convert_to_lower(string):
new=""
for i in string:
j=ord(i)-32 #we are taking the ascii value because the length of lower
#case to uppercase is 32 so we are subtracting 32
if 97<=ord(i)<=122 : #here we are checking whether the charecter is lower
# case or not if lowercase then only we are converting into
#uppercase
new=new+chr(j)
else: #if the character is not the lowercase alplhaber we are taking as it is
new=new+i
print(new)
convert_to_lower("hello world")
我正在尝试在不使用任何内置函数(ord() 和 char() 除外)的情况下对字符串执行从小写到大写的转换。按照此处另一个线程上呈现的逻辑,我想到了这个。
def uppercase(str_data):
ord('str_data')
str_data = str_data -32
chr('str_data')
return str_data
print(uppercase('abcd'))
但是我得到一个错误输出:TypeError: ord() expected a character, but string of length 8 found.What 我错过了吗?
您需要为输入字符串的每个字符执行 ord()。而不是输入字符串:
def uppercase(str_data):
return ''.join([chr(ord(char) - 32) for char in str_data if ord(char) >= 65])
print(uppercase('abcdé--#'))
>>> ABCDÉ
没有加入:
def uppercase(str_data):
result = ''
for char in str_data:
if ord(char) >= 65:
result += chr(ord(char) - 32)
return result
print(uppercase('abcdé--#λ'))
>>> ABCDÉΛ
在我看来最好的方法是使用一个辅助字符串,代表字母表,如果你不想使用 chr()
和 ord()
:
def toUppercase(s):
alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
result = ''
for x in s:
if x not in alphabet or alphabet.index(x)>=26:
result += x
else:
result += alphabet[alphabet.index(x)+26]
return result
这也处理标点符号,例如 ;
或 .
。
更新:
根据OP的要求,这是一个没有index()
的版本:
def toUppercase(s):
alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
result = ''
for x in s:
for pos in range(52):
if alphabet[pos] == x:
i = pos
if x not in alphabet or i>=26:
result += x
else:
result += alphabet[i+26]
return result
print(toUppercase('abcdj;shjgh'))
ord()- Return 单字符字符串的 Unicode 代码点。
您必须发送一个字符串作为参数。在这里,您发送的字符串 'abcd' 有 4 个字符,这是导致问题的原因。将每个字符分别发送给函数,从而调用函数 4 次以获得结果。
这是一个不使用内置函数将字符串转换为大写的程序:
Str1=input("Enter the string to be converted uppercase: ")
for i in range (0,len(Str1)):
x=ord(Str1[i])
if x>=97 and x<=122:
x=x-32
y=chr(x)
print(y,end="")
下面的简化代码有助于使用简单的计算将小写字母转换为大写 字母
代码:
def toUppercase(string):
convertedCharacter = ''
for i in string:
convertCharacter += chr( ( (ord(i)) -32) )
return convertCharacter
char=input("Enter lowercase word :")
for letter in char:
s=ord(letter)
if s>=97 and s<=122:
print(chr(s-32),end=" ")
def uppercase(str_data):
ord('str_data')
str_data = str_data -32
chr('str_data')
return str_data
print(uppercase('abcd'))
在此代码中,ord 将单个字符作为参数,但您提供了多个字符,这就是它显示错误的原因。一次取一个字符,将其转换为大写,并生成如下所示的单个字符串。
def convert_to_lower(string):
new=""
for i in string:
j=ord(i)-32 #we are taking the ascii value because the length of lower
#case to uppercase is 32 so we are subtracting 32
if 97<=ord(i)<=122 : #here we are checking whether the charecter is lower
# case or not if lowercase then only we are converting into
#uppercase
new=new+chr(j)
else: #if the character is not the lowercase alplhaber we are taking as it is
new=new+i
print(new)
convert_to_lower("hello world")