Conversion of string to upper case without inbuilt methods

点点圈 提交于 2019-12-04 07:28:17

问题


I am trying to perform conversion from a lowercase to uppercase on a string without using any inbuilt functions (other than ord() and char()). Following the logic presented on a different thread here , I came up with this.

def uppercase(str_data):
   ord('str_data')
   str_data = str_data -32
   chr('str_data')
   return str_data
print(uppercase('abcd'))

However I am getting an error output: TypeError: ord() expected a character, but string of length 8 found.What am I missing here?


回答1:


You need to execute ord() for each character of your input string. instead of the input string:

def uppercase(str_data):
    return ''.join([chr(ord(char) - 32) for char in str_data if ord(char) >= 65])

print(uppercase('abcdé--#'))
>>> ABCDÉ

Without join:

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ÉΛ



回答2:


The best way, in my opinion is using a helper string, representing the alphabet, if you do not want to use chr() and 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

This also handles punctuation such as ; or ..


Update:

As per the OP's request, this is a version without 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'))



回答3:


Program to convert the string to uppercase without using inbuilt function

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="")



回答4:


ord()- Return the Unicode code point for a one-character string.

You have to send a one character string as an argument. Here, you are sending the string 'abcd' which has 4 characters which is causing the issue. Send each character separately to the function and thus do 4 calls to the function to get the result.




回答5:


The below-simplified code help to convert Lower-case alphabets to Upper-case alphabets using a simple calculation

code :

def toUppercase(string):
    convertedCharacter = ''
    for i in string: 
         convertCharacter += chr( ( (ord(i)) -32) ) 
    return convertCharacter


来源:https://stackoverflow.com/questions/43557929/conversion-of-string-to-upper-case-without-inbuilt-methods

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!