[英]How do I compress multiple for statements so the user can change the number of them
[英]Storing a multiple amounts of integers in a one variable, so i can sum them up or show all of them to a user
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
您已经从@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
快速说明:当用户输入Q
时,您的adding_report
函数中不需要while
循环,并且您想中断主循环
编辑:
我更正了上面的代码以在 Python 3 中工作(我的错,我错过了问题中标记的版本;谢谢@MarkTolonen 指出这一点)。
要使上述代码与 Python 2.7 一起使用,一种选择是将input
替换为raw_input
; 否则,可以在顶部添加修复程序,而其余部分保持不变(如此处建议):
try:
# Fix Python 2.x
input = raw_input
except NameError:
pass
不过,我不是多个 Python 版本支持的专家,所以可能有更好的解决方案。 随意评论和/或扩展,我很高兴听到。
如果您只想将输入存储在列表中并显示总数,则更简单的解决方案是:
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
根据您的条件将上述语句放入函数中。
如果您的问题与 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')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.