如何从 raw_input 创建列表?

How can I create a list from raw_input ?

while true:
    n = raw_input("put your family member's age. if you are done, put 'done'") # if I put int on n, I cannot put done.
    if int(n) == int():
        continue
    if n == str():
        print "ERROR"
        continue
    if n == "done":
        break
print #I couldn't make it

我想做这个程序来计算家庭成员的数量和家庭成员的年龄总和

Q1。我应该把 int 放在 n 上吗?但是如果我把 int 放在 n 上,当我把它放在 done 上时它会出错。我只想在 n

中放入数字和 'done'

Q2。我怎么数n?我应该列一个清单吗?

Python是有魅力的东西。但是当我遇到问题时,它让我抓狂。

将年龄放在 list 中是可行的方法。您可以使用 try except 块来了解用户何时完成。

ages = []
while True:
try:
    n = int(raw_input("put your family member's age. if you are done, put 'done'")) 
    ages.append(n)
except ValueError:
    break

然后你可以 len(ages) 获取条目数,sum(ages) 获取年龄总和

要将项目放入列表中,您可以创建列表并使用 append() 方法。

alist = []
while True:
    try:
        n = int(raw_input("put your family member's age. if you are done, put 'done'")) 
        alist.append(n)
    except ValueError:
        break
print sum(alist) # gives you the sum of the ages

但是,如果您只需要计算总年龄,则不需要列表:

tot = 0
while True:
    try:
        n = int(raw_input("put your family member's age. if you are done, put 'done'")) 
        tot += n
    except ValueError:
        break
print tot # gives you the sum of the ages

使用此方法,您可以附加到列表,然后在用户键入 done 后打印列表和总和。 isdigit() 避免了对 try-except 的需要,但请记住它只适用于正值,没有小数位。对于年龄来说,应该是比较合适的:

age_list = []
while True:
    n = raw_input("put your family member's age. if you are done, put 'done'")
    if n.isdigit():
        age_list.append(int(n))
    elif n == "done":
        break
    else:
        print "ERROR"

print age_list
print sum(age_list)