0

我正在开发一个 python 程序。我想接受少于 140 个字符的用户输入。如果句子超过字数限制,它应该只打印 140 个字符。我可以输入字符,但这就是发生的事情。我是 python 新手。我怎样才能做到这一点?

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

感谢您的帮助

4

3 回答 3

3
userInput = str(input("Enter The Sentense: "))
truncatedInput = userInput[:140]
于 2013-07-08T04:48:11.797 回答
3

为什么不只是测试len

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

如果您愿意,您还可以使用此设置其他错误或退出程序。input = input[:140]确保仅捕获字符串的前 140 个字符。这被包裹在 an 中,if因此如果输入长度小于 140,则该input = input[:140]行不会执行并且不会显示错误。

这被称为 Python 的切片表示法,快速学习的有用链接就是这个。

对您的错误的解释-

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

如果userInput长度为 5,则访问第 6 个元素会出错,因为不存在这样的元素。同样,您尝试访问元素直到 140 并因此得到此错误。如果您要做的只是将字符串拆分为字符,那么一种简单的方法是-

>>> testString = "Python"
>>> list(testString)
['P', 'y', 't', 'h', 'o', 'n']
于 2013-07-08T04:49:18.697 回答
2

for i in range(140)假设字符串中有 140 个字符。当您完成对字符串的迭代时,不会有 index n,因此会引发错误。

你总是可以遍历一个字符串:

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

[:140]Python 的 Slice Notation,它将字符串从第一个字符剪切到第 140 个字符。即使没有第 140 个字符,它也只是到字符串的末尾。

于 2013-07-08T04:51:21.973 回答