Alternative option for this... | Sololearn: Learn to code for FREE!
+ 1

Alternative option for this...

I am doing some of the code coach challenges. In 3 recent ones I have written a for loop to assess a condition and print one of two statements depending on the assessment. The only way I could do it was to have a seperate list or integer that if the for loop was positive I added one to the list or integer. At the end then I would print a statement based on this list or integer being > zero... Here is a sample.. d = 0 for i in list: If num % i != 0: print("not divisible by all") break else: d = d + 1 if d>0: print("divisible by all") I just want the statement printed once....

13th Jul 2020, 9:37 PM
2 ответов
+ 4
num = 20 mylist = [2, 4, 5, 10] mylist2 = [2, 4, 5, 11] print("divisible by all" if all(num % i == 0 for i in mylist) else "not divisible by all") print("divisible by all" if all(num % i == 0 for i in mylist2) else "not divisible by all")
13th Jul 2020, 10:10 PM
rodwynnejones - avatar
There are many different ways of solving all these challenges, even in one language, some more regular, some more elegant. The regular, basic way that would work in all sorts of other languages as well would be using a flag. A flag is a boolean value that contains the result of your testing. It's in essence what you did, only more 'telling'. That goes like this: flag = True for i in list: if num % i != 0: flag = False break if flag: print('divisible by all') else: print('not divisible by all') In Python, there's a nice way to evade using a flag - an additional way to use the keyword 'else': for i in list: if num % i: print('not divisible by all') break else: print('divisible by all') This else means: 'If the loop is not broken...' So if break happens, it will not be executed. You could also make a function and base the output on that: def divisibleByAll(n, divs): for d in divs: if n % d: return False return True
13th Jul 2020, 10:29 PM
HonFu - avatar