[英]Multiples of 10 in a list
I am currently doing an assignment in my intro level CS class and just need a smidge of help.我目前正在做入门级 CS class 的作业,只需要一点点帮助。
They are asking me to write a program that reads a list of integers and determines if it has;他们要我写一个程序来读取一个整数列表并确定它是否有;
It currently correctly outputs everything but mixed values.它目前正确输出除混合值以外的所有内容。 This is what I have:这就是我所拥有的:
n = int(input())
my_list =[]
for i in range(n):
num = int(input())
my_list.append(num)
def is_list_mult10(my_list):
mult10 = True
for i in range(len(my_list)):
if my_list[i] % 10 != 0:
mult10 = False
return mult10
def is_list_no_mult10(my_list):
no_mult10 = True
for i in range(len(my_list)):
if my_list[i] % 10 != 1:
no_mult10 = False
return no_mult10
if is_list_no_mult10(my_list) == True:
print("no multiples of 10")
elif is_list_mult10(my_list) == True:
print("all multiples of 10")
else:
print("mixed values")
def check_multiplier(my_list):
is_10_multiplier = []
for i in my_list:
if i % 10 == 0:
is_10_multiplier.append(True)
else:
is_10_multiplier.append(False)
if sum(is_10_multiplier) == len(my_list):
print("all multiples of 10")
elif sum(is_10_multiplier) == 0:
print("no multiples of 10")
else: print("mixed values")
# tests
mixed = [1, 20, 34, -10]
check_multiplier(mixed)
no_10 = [13, 22, 101, -5]
check_multiplier(no_10)
only_10 = [20, 140, 30, -50]
check_multiplier(only_10)
Function check_multiplier
indexing all elements from my_list
and saves booleans into is_10_multiplier
. Function check_multiplier
索引my_list
中的所有元素并将布尔值保存到is_10_multiplier
中。 Then checks the sum of is_10_multiplier
, if all items are True
then sum is equal length of passed list, if all are False
then sum is 0.然后检查is_10_multiplier
的总和,如果所有项目都是True
则总和等于传递列表的长度,如果所有项目都是False
则总和为 0。
As mentioned in the comments, you have a couple of errors in your code (the return statements are inside the for loop).如评论中所述,您的代码中有几个错误(返回语句在 for 循环内)。
Also, the logic seems a little too complicated:) No need to have 2 separate functions, you can try:另外,逻辑似乎有点太复杂了:)不需要有2个独立的功能,你可以试试:
n = int(input('How many numbers?: '))
my_list =[]
for i in range(n):
num = int(input(f'Insert element {i}: '))
my_list.append(num)
def how_may_mult10(my_list):
# counting how many multiples of 10 you have in your list
number_of_m10 = 0
for num in my_list:
if num % 10 == 0:
number_of_m10 += 1
return number_of_m10
number_of_m10 = how_may_mult10(my_list)
if number_of_m10 == len(my_list):
print('All multiples of 10')
elif number_of_m10 == 0:
print('No multiples of 10')
else:
print('Mixed values')
I see you have done some logical as well as syntactic error, as mentioned in the comments also.我看到您犯了一些逻辑和语法错误,正如评论中也提到的那样。
Below is your modified code:以下是您修改后的代码:
n = int(input())
my_list =[]
for i in range(n):
num = int(input())
my_list.append(num)
def is_list_mult10(my_list):
mult10 = True
for i in range(len(my_list)):
if my_list[i] % 10 != 0:
mult10 = False
return mult10 #changed here
def is_list_no_mult10(my_list):
no_mult10 = True
for i in range(len(my_list)):
if my_list[i] % 10 == 0: #changed here
no_mult10 = False
return no_mult10 #changed here
if is_list_no_mult10(my_list) == True:
print("no multiples of 10")
elif is_list_mult10(my_list) == True:
print("all multiples of 10")
else:
print("mixed values")
It successfully prints the correct statement.它成功地打印出正确的语句。 However I'll suggest you to try to optimise e your program.但是,我建议您尝试优化您的程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.