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)#打印数字的水平列表