2017-09-24 48 views
-1
def adding_report(var): 
    lists=[] 
    total=0 
    while True: 
     if var.isdigit(): 
      total+=int(var) 
      int(var).append(lists) 
     elif var=="Q": 
      choice=input("For total 'T' , for all 'A'").upper 
      if choice=='T': 
       print(total) 
       break    
      elif choice=='A': 
       print(lists) 
       print(total) 
       break     
      else: 
       print("Invalid input") 

while True: 
    var=input("Enter an integer or Quit 'Q' ") 
    if var.isdigit(): 
     adding_report(var) 
    elif var=="Q": 
     adding_report(var) 
     break 
    else: 
     print("Invalid input") 

我试图存储从用户那里获得的输入。我需要将它们存储在一个变量中。我将在用户需要时显示所有输入,或者我将总结所有输入并向用户显示总体结果。但我不知道如何将整数存储在一个变量中。在一个变量中存储多个整数,所以我可以总结它们或将它们全部显示给用户

最终名单应该是这样的; 输入1 输入2 输入3

总:输入1 +输入2 +输入3

+0

你是什么意思的一个变量? –

+0

我的意思是我想将每个输入存储在一个变量中,所以我可以稍后使用它们。例如,我想将每个输入存储在一个列表中。 –

+0

您的代码*已经*尝试将所有整数存储在一个变量中。该变量被称为'列表'。你确实需要在'while'循环之前放置'adds_report',而不是之后。并且你有'append'回到前面。它应该是'lists.append(int(var))'。 – BoarGules

回答

0

如果你只是想存储在一个列表中输入并显示总,更简单的解决将是这样:

lista = list(map(int, input().split())) 

for index, item in enumerate(lista): 
    print("input{} : {}".format(index, item)) 

print("Total: ", sum(lista)) 

# 1 2 3 
# input0 : 1 
# input1 : 2 
# input2 : 3 
# Total: 6 

认沽上面的语句根据你的条件转换成函数。

1

你已经得到了@bhansa一个干净的解决方案,但是,万一你想保持环和连续的用户输入,因为他们在你的脚本:

def adding_report(var, values): 
    if var.isdigit(): 
     values.append(int(var)) 
     return False 
    elif var.lower() == 'q': 
     total = sum(values) 
     choice = input("For total: T , for all: A\n").lower() 
     if choice in 'ta': 
      if choice == 'a': 
       print(' '.join([str(i) for i in values])) 
      print(total) 
      return True 
     print("Invalid input") 

if __name__ == "__main__": 
    values = [] 
    total = 0 
    while True: 
     var = input("Enter an integer or Quit 'Q'\n") 
     exit = adding_report(var, values) 
     if exit: 
      break 

快速注意:你不需要你adding_report功能一个while环和要打破主循环,当用户键入Q


编辑

我纠正了上面的代码在Python 3中工作(我不好,我错过了这是在问题中标记的版本;谢谢@MarkTolonen指出)。

为了让上述代码与Python 2.7一起工作,一种选择是用raw_input代替 input;否则,修复可以在上面添加,而留下其余不变(为suggested here):

try: 
    # Fix Python 2.x 
    input = raw_input 
except NameError: 
    pass 

我没有多个版本的Python支持的专家,虽然如此,有可能是更好的解决方案。随意评论和/或扩大,我很乐意听到。

+0

这个问题被标记为“python-3。 x'。 'raw_input'只在Python 2中。'input'在Python 3中是相当的。 –

+0

你是对的@Mark,谢谢你指出。我只是编辑了这个问题,我希望现在更好地制定 – mapofemergence

+0

您的答案是做的很好!但是我的函数只需要一个字符串参数。但似乎你的答案进一步提高了我对Python的知识。非常感谢你们, –

0

如果您的问题是关于EDX Python的过程中,你的代码可以看起来象下面这样:

当使用“A”作为参数adding_report()给出了所有输入整数,总的打印效果。 “T”只给出打印结果。

def adding_report(report): 
my_sum = 0 
my_rep = report 
elements = ['Items'] 
print('Input an integer to add to the total or "Q" to quit') 
while True: 
    element = input('Enter an integer or "Q" for quit: ') 
    if element.isdigit(): 
     my_sum += int(element) 
     elements.append(element) 
    elif element.lower().startswith("q"): 
     if my_rep == 'A': 
      for el in elements: 
       print(el) 
      print('\nTotal\n', my_sum) 
      break 
     elif my_rep == 'T': 
      print('\nTotal\n', my_sum) 
      break 
    else: 
     print('"' + element + '"', 'is invalid input') 


adding_report('A') 
adding_report('T') 
相关问题