python-3.xinputuser-inputpls

Want to get input on same line for variables at different places in Python3. See the below code and text for clarification


I want to take input of how many inputs the user is going to give next and collect those inputs in a single line. For eg. if user enters '3' next he has to give 3 inputs like '4' '5' '6' on the same line.

N = int(input())
result = 0
randomlist = []

for number in range(N):
    K = int(input())

    for number2 in range(K):
         a = int(input())
    
         if number2 != K - 1:#Ignore these on below
              result += a - 1

         else:
              result += a
              randomlist.append(result)
              result = 0
              break

for num in range(N):
b = randomlist[num]
print(b)

Now I want the input for K and a (also looped inputs of a) to be on the same line. I have enclosed the whole code for the program here. Please give me a solution on how to get input in the same line with a space in between instead of hitting enter and giving inputs


Solution

  • Based on what I read from your question, you are trying to request input from the user and the desired format of the input is a series of numbers (both integers and floats) separated by spaces. I see a couple of ways to accomplish this:

    To perform these operations you can do one of the following:

    #Request User to provide a count followed by the numbers
    def getInputwithCount():
        # Return a list Numbers entered by User
        while True:
            resp = input("Enter a count followed by a series of numbers: ").split(' ')
            if len(resp) != int(resp[0]) + 1:
                print("Your Input is incorrect, try again")
            else:
                break
        rslt = []
        for v in resp[1:]:
            try:
                rslt.append(int(v))
            except:
                rslt.append(float(v))
        return rslt  
    

    or for the simpler solution just ask for the numbers as follows:

    def getInput():
        # Return the list of numbers entered by the user
        resp = input("Enter a series of numbers: ").split(' ')
        rslt = []
        for v in resp:
            try:
                rslt.append(int(v))
            except:
                rslt.append(float(v))
        return rslt