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

时间:2019-05-21 16:57:34

标签: python

我想制作一个Python脚本,让用户输入7个数字,然后检查哪些数字可以除以3,然后将这些数字求和,并以“ sum = xx”的形式显示给用户。

我尝试过:

{
    template: `
    <section/>
        <div class="LAYOUTwrapper_section" v-if="shouldDisplay"></div>
    </section>
    `,
    props: {
        shouldDisplay: Boolean
    }
}

2 个答案:

答案 0 :(得分:1)

这里使用列表理解,

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}')

答案 1 :(得分:0)

您可以使用int函数从输入中获取整数列表,该函数为您提供字符串中的整数对象,因为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,您可以使用try-exceptstatement来捕获它。

请注意,我是如何将变量名更改为my_list的,因为名称list在Python中已经具有含义,并且最好不要将其分配给变量。

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

numbers = map(int, my_list)

然后,您可以使用len函数检查列表中是否有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整除的数字,然后使用sum函数求和。 >

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