2016-08-23 3 views
0

У меня возникла проблема, когда пользователь вводит разные коды, в одну переменную, а затем я хочу разбить эти входные данные, чтобы сделать их в список. Однако я понял, что моя переменная принимает только последний вход, означающий, что список приходит с одним кодом, а не с несколькими. Как сделать переменную хранить несколько входов?Почему мой код только за исключением последнего ввода?

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) 

И я не могу использовать это (Two values from one input in python?) потому что я не знаю, как много элементов, пользователь хочет, вход пользователей может изменяться от 1 до 5. пункта

ответ

0

Возможно, это поможет вам:

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

Я добавил .split() в строку 8, проблема в том, что теперь я получаю объект «списка», у которого нет атрибута «isnumeric», очевидно, что я использую isnumeric() для проверки ввода пользователей в число. Я также попытался поместить int в строку 8 вместо использования isnumeric(), но я все равно получаю ту же ошибку. –

1

Создайте пустой список, а затем используйте list.append внутри вас. Что это будет делать, так это добавить каждую новую запись в конец вашего списка.

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) 

Вы также должны avoild с помощью list в качестве имени переменной, как вы перезаписать встроенный метод списка.

Также ваш код не совсем работает на недопустимые входы. Если введенный код неверен, он все равно увеличивается, как если бы был добавлен действительный элемент. Вы должны переместить items.append(GTIN) внутрь оператора if, где вы проверяете GTIN.

+0

Большое спасибо за ваш ответ. –

+0

Большое спасибо за ваш ответ. Я новичок в этой функции .append(), вы можете объяснить, что она делает и почему вы проверяете длину элемента? Я больше не буду использовать список как переменную;). Кроме того, я только что протестировал свою программу, она только ожидает коды из моего текстового файла, так как вы можете видеть, что моя программа читает мой текстовый файл, чтобы узнать, соответствует ли пользовательский ввод. Если вы попытаетесь ввести что-нибудь еще, он просто выведет код неверно и задает вопрос. –

+0

Вместо того, чтобы объяснять списки, я думаю, что лучше всего прочитать некоторые из [docs] (https://docs.python.org/3/tutorial/datastructures.html#) или учебников по python. Их довольно просто понять, поэтому просто играйте с ними в IDLE, пока не сделаете это. –

Смежные вопросы