+ 3

How to take 3 variables in a for loop?

I have written a code. for x,y,z in map(int, input().split()): print(x,y,z) I want to use it as list comprehension with a formula. But the code doesn't work. Even i make it into tuple or list the code doesn't work. It gives out an error "cannot unpack non-iterable int object"

16th Apr 2022, 5:50 PM
Anshuman Routray
Anshuman Routray - avatar
17 Answers
+ 5
It's tuple unpacking, the basic form is: x, y = (2, 3) print(x, y) So, all you need something that returns a list of tuples to unpack from iteration variables. In this case, you can use zip() function. n,p = int(input()),list() for _ in range(n): numlist = list((map(int, input().split()))) a,b,c, = numlist[:1],numlist[1:-1],numlist[2:] k = [x*y+z for x,y,z in zip(a,b,c)] p.extend(sum(map(int, str(x))) for x in k) print(*p)
17th Apr 2022, 6:52 AM
Simba
Simba - avatar
+ 3
Anshuman Routray , to get your code run as a comprehension with also doing the calculation, we need to know, that a comprehension needs to get an *iterable* as input. this is not different from running a regular for loop. instead of using list(...) to accomplish this, we should use just [...] which is also a comprehension. so we have a nested comprehension. the line in your code where the checksum is calculated, needs a bit more reworking. so the code that is doing the input and all the calculation is only 2 lines: n,p = int(input()),list() for _ in range(n): k = [x*y+z for x,y,z in [map(int, input().split())]] # calculating the value k, nested comprehension p.append(sum(list(map(int, str(*k))))) # calculating the checksum of k print(*p)
17th Apr 2022, 9:25 AM
Lothar
Lothar - avatar
+ 2
Anshuman Routray , the way the comprehension is currently done is not working. the reason is, that input().split() does not supply 3 numbers in one go, but it supplies the 3 numbers one by one. we should separate the input from the calculation. here is a rough try, that may guide you: counter = int(input()) # do not create and initialize 2 variables in one line check_sum = [] for i in range(counter): inp = [int(num) for num in input().split()] # input 3 numbers separated by space buf = str(inp[0] * inp[1] + inp[2]) # doing the required calculation check_sum.append(sum([int(dig) for dig in buf])) # calculating the checksum print(*check_sum) # output result
16th Apr 2022, 8:14 PM
Lothar
Lothar - avatar
+ 2
Lothar got it 🙇
17th Apr 2022, 10:07 AM
Anshuman Routray
Anshuman Routray - avatar
+ 2
Simba thanks for the code
17th Apr 2022, 10:07 AM
Anshuman Routray
Anshuman Routray - avatar
+ 2
Prince Kumar , if you are asking how this is calculated, see the description from the op somewhere above.
18th Apr 2022, 10:35 AM
Lothar
Lothar - avatar
+ 1
n,p = int(input()),list() for _ in range(n): k = [x*y+z for x,y,z in list(map(int, input().split()))] p.append(sum(list(map(int, str(x).replace('',' ').split())))) print(*p) How to make this code work?
16th Apr 2022, 5:54 PM
Anshuman Routray
Anshuman Routray - avatar
+ 1
An illustration of input and expected output may help others to better understand your intention, and suggest you accordingly.
16th Apr 2022, 6:00 PM
Ipang
+ 1
Input data are in the following format: first line contains N - the number of values to process; and then N lines will follow describing the values for which sum of digits should be calculated by 3 integers A B C; for each case you need to multiply A by B and add C (i.e. A * B + C) - then calculate sum of digits of the result.
16th Apr 2022, 6:21 PM
Anshuman Routray
Anshuman Routray - avatar
+ 1
input data: 3 11 9 1 14 90 232 111 15 111 answer: 1 16 21
16th Apr 2022, 6:21 PM
Anshuman Routray
Anshuman Routray - avatar
+ 1
Lothar , I know how to make a working code to this problem But I want to learn more about the loop thing when it comes to multiple variables. Could you please explain me how to use multiple variable in a for loop?
17th Apr 2022, 1:32 AM
Anshuman Routray
Anshuman Routray - avatar
+ 1
Prince Kumar Input data are in the following format: first line contains N - the number of values to process; and then N lines will follow describing the values for which sum of digits should be calculated by 3 integers A B C; for each case you need to multiply A by B and add C (i.e. A * B + C) - then calculate sum of digits of the result.
18th Apr 2022, 12:15 PM
Anshuman Routray
Anshuman Routray - avatar
0
Thanks I searched for explaining I searched for it on google and understood how list comprehension works. But I have seen people using multiple variables in a for loop how does that work could you explain me? Here is an example, for i, j in [(0, 1), ('a', 'b')]: ... print('i:', i, 'j:', j) output: i: 0 j: 1 i: a j: b How does this work? and is it different form list comprehension?
17th Apr 2022, 6:22 AM
Anshuman Routray
Anshuman Routray - avatar
0
def downloadData(n,i,d): for name, id, data in zip(n,i,d): URL = "http://www.website.com/data/{}".format(name) #downloads the file from the website. The last part of the URL is the name r = requests.get(URL) with open("data/{}_{}_{}.csv".format(name, id, data), "wb") as code: #create the file in the format name_id_dataType code.write(r.content)
18th Apr 2022, 7:14 AM
SOMEONE
0
Anshuman Routray sorry but what is the result you would obtain?
18th Apr 2022, 9:22 AM
Raffaele Bisogno
Raffaele Bisogno - avatar
0
How to print take a num it is a strong num Or not a strong
18th Apr 2022, 10:53 AM
althaf 42