if语句不在while循环中执行

时间:2013-04-23 15:38:54

标签: python if-statement python-3.x

我必须编写一个程序,一个接一个地获取由sentinel DONE终止的多个字符串,然后打印这个字符串列表,右对齐到最大字符串的长度。这是我的代码:

user = input("Enter strings (end with DONE):\n")
totalString = ""

while True:
    if user.lower() == 'done':
        break
    else:
        totalString = totalString + user + " "
        user = input("")

lst = totalString.split(" ")
max = 0

for i in range(len(lst)):
    if len(lst[i]) > max:
        max = len(lst[i])

for i in range(len(lst)):
    print("{:>{derp}}".format(lst[i],derp=max))

我遇到的问题是while循环中的if语句永远不会执行,所以它只会卡在该循环中。

2 个答案:

答案 0 :(得分:0)

NB :假设该代码适用于Python 2.x,可能不是这种情况。

首先使用input(),您需要数字值,而不是字符串。 只需将input()更改为raw_input()就可以了。 正如评论中所指出的,也许OP正在使用Python 3。

关于SO的

This问题解释了Python 2.x和3.x wrt input()和raw_input()的差异。

答案 1 :(得分:0)

当您使用cmd运行代码时,input返回的字符串也包含返回字符(\r)。

因此,当用户输入"done"时,input()实际上会返回"done\r"

一个简单的解决方案是在这里使用str.strip

user = input("").strip("\r")