如何要求用户输入数字,然后将可被3整除的数字相加?

2024-04-19 16:35:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想制作一个Python脚本,让用户输入7个数字,然后检查哪些数字可以除以3,然后将这些数字相加,并将其显示为“sum=xx”。你知道吗

我试过:

input_string = input("Enter a list element separated by space ")
list  = input_string.split()

Tags: 用户脚本inputstringby数字spaceelement
2条回答

这里是使用列表理解

input_string = input("Enter a list element separated by space ")
numbers  = [int(num) for num in input_string.split(',') if int(num) % 3 == 0]
print('Sum = {}'.format(sum(numbers)))

这是基于你上面的问题。你知道吗

但是,您也说过您希望用户输入7个数字,然后找到可被3整除的数字的和。你知道吗

下面是另一个简单的例子,我们要求用户输入7个数字,一次输入一个数字,最后打印总和。你知道吗

all_numbers = []

for i in range(7):
    num = int(input(f'Enter number {i + 1}:\n1'))
    all_numbers.append(num)

sum_of_numbers = sum([num for num in all_numbers if num % 3 == 0])
print(f'Sum = {sum_of_numbers}')

您可以使用^{}函数从输入中获取整数列表,该函数从字符串中提供整数对象,因为split函数只提供分离字符串的列表。你知道吗

input_string = input("Enter a list element separated by space ")
my_list = input_string.split()
numbers = []
for n in my_list:
    numbers.append(int(n))

但是,如果n不是有效的数字(例如"a"),这将抛出ValueError,您可以用^{}-^{}statement捕获它。你知道吗

注意我是如何将变量的名称更改为my_list,因为名称list在Python中已经有了含义,最好不要将它赋给变量。你知道吗

如果要在一个步骤中完成,可以使用有用的map函数将int函数应用于list中的所有元素。您可以查看此函数的文档,以及python documentation上的任何其他函数,或者使用help内置函数。(例如help(map)

numbers = map(int, my_list)

然后,您可以使用^{}函数检查列表中是否有7个数字,如果没有7个数字,您可以提示用户再次输入数字(如果您希望这样做)。你知道吗

>>> my_list = [1, 2, 3]
>>> len(my_list) == 3
True

如果要一直提示用户直到列表中有七个数字,可以将提示放在while块中,如图所示:

numbers = [] # We create an empty list
while len(numbers) != 7:
    input_string = input("Enter a list element separated by space ")
    my_list = input_string.split()
    numbers = list(map(int, my_list)) # Get the numbers

在得到这些数字之后,您可以通过使用modulo操作符来查看哪些数字可以被3整除,这将为您提供将一个数字除以另一个数字(在您的示例中是3)的其余部分。一些例子:

>>> 7%3  #  7 = 3*2 + 1
1
>>> 19%5 # 14 = 5*3 + 4
4
>>> 8%4  #  8 = 4*2 + 0
0

因为您想检查列表中哪些数字可以被3整除,所以您可以检查这个模块是否在列表的循环中是0。你知道吗

如果数字可以被3整除,可以将它们添加到计数变量中,可以在循环之前初始化为0。这样,在循环之后,就可以得到这个变量的和。你知道吗

另一种更优雅的方法是使用list comprehension而不是循环,循环只保留可被3整除的数字,然后使用^{}函数对其元素求和。你知道吗

new_list = [x for x in numbers if x%3 == 0]
sum = sum(new_list)

相关问题 更多 >