簡體   English   中英

將多個整數存儲在一個變量中,因此我可以將它們相加或將它們全部顯示給用戶

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM