2013-08-22 37 views
2

我是編程新手,我需要一些免費的在線教程來學習Python。我正在構建自己的方法來將輸入字符串轉換爲全部小寫字母。我無法使用string.lower()方法。在我到目前爲止的代碼中,我無法弄清楚如何將輸入字符串分隔成可以輸入到字符轉換器lowerChar(char)中的字符。python製作我自己的小寫轉換器

string=input #input string 


def lowerChar(char):    #function for converting characters into lowercase 
    if ord(char) >= ord('A') and ord(char)<=ord('Z'): 
     return chr(ord(char) + 32) 
    else: 
     return char 

def lowerString(string):  #function for feeding characters of string into lowerChar 
    result = "" 
    for i in string: 
    result = result + lowerChar(string[i]) 
    return result 
+2

您遍歷所有的字符串是錯誤的。如果你在字符串中爲我做,你實際上已經在變量i中有每個字符。那麼不需要string [i]。 – languitar

+0

您還應該將return語句放在for循環外部的lowerString()中,否則它將僅用於第一個字符 –

回答

3

你真的很接近:

def lowerString(string): 
    result = "" 
    for i in string: 
    # i is a character in the string 
    result = result + lowerChar(i) 
    # This shouldn't be under the for loop 
    return result 

字符串是可迭代的,就像列表!

此外,請務必小心縮進級別,並且使用的空格數應該一致。

1

你只返回的第一個字母,您在外部範圍有return,試試這個,也最好是使用+=代替result = result + lowerChar(i)

def lowerString(string):  #function for feeding characters of string into lowerChar 
    result = "" 
    for i in string: 
    result += lowerChar(i) 
    return result 

print lowerString("HELLO") #hello 
1

一個小竅門:你不需要使用ord()。 Python可以直接做以下對比:

if char >= 'A' and char<='Z':

0

我的解決辦法:

string = input("Input one liner: ") 

def lowerChar(char): 
    if char >= 65 and char <= 90: 
     char = chr(char + 32) 
     return char 
    else: 
     char = chr(char) 
     return char 


def lowerString(string): 
    result = "" 
    for i in range(0, len(string)): 
     result = result + lowerChar(ord(string[i])) 
    return result 

print(lowerString(string))