2013-07-08 68 views
0

我正在開發一個python程序。我想要輸入少於140個字符的用戶輸入。如果該句子超出字數限制,則應打印140個字符。我能夠輸入字符,但這是發生了什麼。我是python的新手。我怎樣才能做到這一點?如何讓用戶輸入少於140個字符?

def isAlpha(c): 
    if(c >= 'A' and c <='Z' or c >= 'a' and c <='z' or c >= '0' and c <='9'): 
     return True 
    else: 
     return False 


def main(): 
    userInput = str(input("Enter The Sentense: ")) 
    for i in range(140): 
     newList = userInput[i] 
     print(newList) 

這是輸出我得到

Enter The Sentense: this is 
t 
h 
i 
s 

i 
s 
Traceback (most recent call last): 
    File "<pyshell#1>", line 1, in <module> 
    main() 
    File "C:/Users/Manmohit/Desktop/anonymiser.py", line 11, in main 
    newList = userInput[i] 
IndexError: string index out of range 

感謝您的幫助

回答

3
userInput = str(input("Enter The Sentense: ")) 
truncatedInput = userInput[:140] 
+0

感謝您的快速回復。幫助。 – Manmohit

+2

它可能有助於提及這被稱爲Python的* slice *符號,並給出一些[參考](http://stackoverflow.com/questions/509211/the-python-slice-notation)。 –

+1

另外,'Sentense'應該是'sentence' - 沒有大寫字母(它不是一個「專有名詞」,並且不在句首),在'n'後面有'c',而不是's'。 –

3

爲什麼不只是測試的len

if len(input) > 140: 
    print "Input exceeds 140 characters." 
    input = input[:140] 

如果需要,您也可以使用此方法提出其他錯誤或退出程序。 input = input[:140]確保只捕獲字符串的前140個字符。這將包含在if中,以便如果輸入長度小於140,則input = input[:140]行不會執行,並且不顯示錯誤。

這被稱爲Python的片斷記法,快速學習有用的鏈接將this.

解釋你的錯誤 -

for i in range(140): 
    newList = userInput[i] 
    print(newList) 

如果userInput的長度爲5,那麼訪問第六元素給一個錯誤,因爲沒有這樣的元素存在。同樣,你嘗試訪問元素直到140,因此得到這個錯誤。如果你正在試圖做的一切都分割字符串成它的角色,那麼,一個簡單的方法是 -

>>> testString = "Python" 
>>> list(testString) 
['P', 'y', 't', 'h', 'o', 'n'] 
+1

但是你甚至不需要,因爲切片符號默默地允許切片多於可用的字符。 –

+0

是的。真正。我只是做了這個,所以他有辦法在屏幕上顯示輸出消息。 :) –

2

for i in range(140)假設有字符串中的140個字符。當你完成遍歷字符串時,將不會有索引n,所以會引發錯誤。

您可以隨時通過遍歷字符串:

for i in str(input("Enter a sentence: "))[:140]: 
    print i 

[:140]Python's Slice Notation,其削減從第一個字符到第140的字符串。即使沒有第140個字符,它也會到達字符串的末尾。

+0

+1用於解釋問題是什麼,並提出更優雅的方法。 – 2013-07-08 05:31:08

相關問題