Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python(可以保存值的语法)_Python - Fatal编程技术网

Python(可以保存值的语法)

Python(可以保存值的语法),python,Python,我一直试图通过使用以下函数来解决这个问题。我应该如何存储所有数字输入值,并仅在程序结束循环时在程序结束时打印它们 def compare(a): a=0 while True: b=input("Enter an integer : ") if b.isdigit(): k=n+1 a=a+int(b) elif b.isalpha(): if b.upper(

我一直试图通过使用以下函数来解决这个问题。我应该如何存储所有数字输入值,并仅在程序结束循环时在程序结束时打印它们

def compare(a):
    a=0
    while True:
        b=input("Enter an integer : ")
        if b.isdigit():
            k=n+1
            a=a+int(b)
        elif b.isalpha():
            if b.upper()=="Q":
                print("Digits\n",a,"\nTotal\n",a)
                break
            else:
                print("Invalid Value. Enter again")
        elif b.isalnum():
            print("Value not recognized. Enter a valid value.")
        else:
            print("Unrecognized value is submitted. Enter again")

根据问题更新您的代码

def compare(a):
    a=0
    all_digits = []  # Empty list
    while True:
        b=input("Enter an integer : ")
        if b.isdigit():
            all_inputs.append(b)  # Append digit to list
            k=n+1
            a=a+int(b)
        elif b.isalpha():
            if b.upper()=="Q":
                print("Digits\n",a,"\nTotal\n",a)
                print("all digits: {}".format(all_digits))
                break
            else:
                print("Invalid Value. Enter again")
        elif b.isalnum():
            print("Value not recognized. Enter a valid value.")
        else:
            print("Unrecognized value is submitted. Enter again")
但这将是更好的代码:

def compare(): # no need to pass any argument
    a = 0
    all_digits = []               # Empty list
    while True:
        b = raw_input("Enter an integer: ")
        if b.isdigit():
            all_digits.append(b)  # Append digit to list
            a = a + int(b)            # do not see 'k' being used anywhere
        elif b.isalpha():
            if b.upper() == "Q":
                print("Digits: {}\nTotal: {}\nSum: {}".format(", ".join(all_digits), len(all_digits), a))
                break
            else:
                print("Invalid Value. Enter again")
        else:                     # no need of b.isalnum(). this will take care of both
            print("Unrecognized value is submitted. Enter again")
输出

Enter an integer: 1
Enter an integer: 2
Enter an integer: 3
Enter an integer: 4
Enter an integer: 5
Enter an integer: Q
Digits: 1, 2, 3, 4, 5
Total: 5
Sum: 15

我假设您希望总数打印的是位数,而不是位数的总和。与您的代码相比,带有更改注释的工作版本:

def compare(): # input value is not used
    a=[] # changed a to a list instead of integer
    n=0 # hold the number of digits that were entered
    while True:
        b=input("Enter an integer : ")
        if b.isdigit():
            n+=1 # add 1 to the number of digits that were entered, variable k is not used
            a.append(int(b)) #append the entered digit to list a
        elif b.isalpha():
            if b.upper()=="Q":
                print("Digits\n",*a,"\nTotal\n",n) # use print(*a) to print the list of numbers
                break
            else:
                print("Invalid Value. Enter again")
        elif b.isalnum():
            print("Value not recognized. Enter a valid value.")
        else:
            print("Unrecognized value is submitted. Enter again")

您需要一个
列表
将每个输入附加到列表中,然后在末尾输出该列表,例如,使用
打印
它只显示我输入的最后一个数字。。。。它不显示我输入的实际数字?我不能将我输入的所有数字存储在单个变量中吗?##它打印输入值的总和?您能清楚地说明您的要求吗?您需要打印所有输入的数字吗?总位数?所有数字的总和?我需要打印我输入的所有数字。。。。我已经有了打印总和的代码…似乎你想存储一串数字。如果你做
a='';a=a+b
a
将是一个串联的数字字符串。但是您的代码正在执行
a=0;a=a+int(b)
这是在添加数值,而不是连接字符。@Puru,现在检查是否可以将水平打印列表更改为垂直打印?@Tijn,不需要n+=1。此外,您可以直接使用len(a)如果要水平打印,可以使用字符串的join方法通过“\n”字符连接字符串列表:print('\n'.join(map(str,a)),“\n总计\n”,n)#打印数字的水平列表