user6747824
user6747824

Reputation:

Why does my code only except the last input?

I am having a problem where the user enters various codes , into 1 variable and then i want to split these input to make it into a list.However , I have realized that my variable only takes in the last input meaning the list comes out with only one code and not several. How do I make a variable store multiple inputs ?

while True:
    itemsneeded = input("How many items do you need?")
    if itemsneeded.isnumeric() and int(itemsneeded) <= 5:
        break
    GTIN = ''
    count = 0
    while count < int(itemsneeded):
        GTIN = (input('Please enter all GTIN-8 for all items'))
        if GTIN.isnumeric() and len(GTIN) == 8:
            Num0 = int(GTIN[0]) * 3
            Num1 = int(GTIN[1])
            Num2 = int(GTIN[2]) * 3
            Num3 = int(GTIN[3])
            Num4 = int(GTIN[4]) * 3
            Num5 = int(GTIN[5])
            Num6 = int(GTIN[6]) * 3
            Num7 = int(GTIN[7])
            total2 = (Num0 + Num1 + Num2 + Num3 + Num4 + Num5 + Num6 + Num7)
            if total2 % 10 == 0:
                print(GTIN)
                if GTIN in open('read_it.txt').read():
                    print('entered GTIN is valid')
                else:
                    print('The code entered is invalid')
                    print('Please renter this code')

            count += 1
        else:
            print("The entered GTIN-8 codes are incorrect")
            print(GTIN)
    lst = GTIN.split()
    print(lst)

And I can not use this (Two values from one input in python?) becuase I do not know how many items the user wants , the users input can vary from 1 item to 5.

Upvotes: 0

Views: 582

Answers (2)

Steven Summers
Steven Summers

Reputation: 5384

Create an empty list and then use list.append inside you loop. What this will do is add each new entry to the end of your list.

GTIN=''
#count=0
items = [] # replaces count = 0
#while count<int(itemsneeded):
while len(items) < int(itemsneeded): # replaces other while condition
    ...
        ...
        #count += 1
        items.append(GTIN) # replaces count += 1
    ...

print(items)

You should also avoild using list as the variable name as you overwrite the built-in list method.

Also your code doesn't quite work for invalid inputs. If the code they enter is incorrect then it still increments as if a valid item has been added. You should move items.append(GTIN) to inside the if statement where you check the GTIN is valid.

Upvotes: 1

dannyxn
dannyxn

Reputation: 422

Perhaps it will help you:

nums = input().split()
int_nums = [ int(x) for x in nums ]

Upvotes: 0

Related Questions