我正在开发一个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
感谢您的帮助
答案 0 :(得分:3)
userInput = str(input("Enter The Sentense: "))
truncatedInput = userInput[:140]
答案 1 :(得分:3)
为什么不测试len
?
if len(input) > 140:
print "Input exceeds 140 characters."
input = input[:140]
如果您愿意,也可以使用此方法设置其他错误或退出程序。 input = input[:140]
确保仅捕获字符串的前140个字符。这包含在if
中,因此如果输入长度小于140,则input = input[:140]
行不会执行,并且不会显示错误。
这称为Python的Slice Notation,一个用于快速学习的有用链接this.
您的错误说明 -
for i in range(140):
newList = userInput[i]
print(newList)
如果userInput
的长度为5,那么访问第6个元素会产生错误,因为不存在这样的元素。同样,您尝试访问元素直到140,因此得到此错误。如果您要做的就是将字符串拆分成字符,那么,一个简单的方法就是 -
>>> testString = "Python"
>>> list(testString)
['P', 'y', 't', 'h', 'o', 'n']
答案 2 :(得分: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个字符,它也只是到了字符串的末尾。