#python
#python
Вопрос:
if n == 0:
print('And your products are: ')
for i in inputs:
with open('items.txt') as f:
for line in f:
if i in line:
desc1 = line[9:17]
price1 = line[21:25]
print(str(desc1) ' ' str(price1) ' ' str(quantities))
При запуске кода ошибки нет. При запуске он выводит:
Our available products are:
15372185 ChocBisc
13281038 AppJuice
26419633 TomaSoup
74283187 SprRolls
Enter the product code: 74283187
SprRolls
Price = 0.90
Available Quantity = 86
Is this what you want? (Y/N) y
How much would you like? 34
Would you like to continue? (Y/N) y
Continuing!
Enter the product code: 15372185
ChocBisc
Price = 1.20
Available Quantity = 50
Is this what you want? (Y/N) y
How much would you like? 45
Would you like to continue? (Y/N) n
System Closing!
And your products are:
SprRolls 0.90 [34, 45]
ChocBisc 1.20 [34, 45]
Как вы можете видеть, прямо внизу печатаются оба введенных значения. Я знал, что это будет сделано, но я не знаю, как это исправить. Что мне нужно, так это напечатать только количество, введенное для этого кода продукта. Любая помощь, как всегда, будет принята с благодарностью. Спасибо!!
Также я удалил большую часть скрипта в while n == 1, поскольку это моя курсовая работа, и я бы предпочел, чтобы она не копировалась или что-то в этом роде. Надеюсь, это все еще показывает соответствующий раздел кода на вопрос.
Комментарии:
1. Не могли бы вы показать нам несколько строк данных в вашем ‘items.txt — досье? Как он формируется
2. Конечно. Текст выглядит следующим образом: 15372185 ChocBisc 50 1.20 13281038 AppJuice 67 1.50 26419633 TomaSoup 32 2.10 74283187 SprRolls 86 0.90 У каждого продукта есть своя строка, и строка заканчивается десятичным числом
Ответ №1:
Я бы переписал последнюю часть вашего кода, чтобы перебирать диапазон значений inputs
, а не сами значения. Затем вы можете вызвать индекс элемента, из которого хотите распечатать quantities
.
В качестве предостережения, это работает в вашем случае, потому что пользователь отправляет входные данные по inputs
одному за раз (таким образом, индексы inputs
соответствуют индексам quantities
). Вы могли бы рассмотреть другую структуру данных для использования в этом коде, например словарь, в котором могли бы храниться коды продуктов и количества в виде пар ключ / значение. Затем вы можете просто ссылаться на ключ словаря при печати.
Вот как я бы предложил изменить ваш код:
if n == 0:
print('And your products are: ')
for i in range(len(inputs)):
with open('items.txt') as f:
for line in f:
if inputs[i] in line:
desc1 = line[9:17]
price1 = line[21:25]
print(str(desc1) ' ' str(price1) ' ' str(quantities[i]))
Комментарии:
1. Работает отлично. Не могли бы вы рассказать мне, как это работает (как можно проще, я новичок в python).
2. Нет проблем —
range()
функция в Python выдает вам целые числа в последовательности, например: range(5) = 0,1,2,3,4.len()
дает вам длину (или размер) вашего списка. По сути,range(len(yourList))
вы перебираете индексы вашего списка, а не сами фактические элементы (такinputs[0]
что 1-й элементinputs
,inputs[1]
2-й и так далее). Таким образом, вы можете использоватьi
для ссылки на индексыinputs
, а также на индексыquantities
🙂
Ответ №2:
Вы создаете новый список для количеств, поэтому в конце, когда вы распечатываете этот список, вы можете добавить его, чтобы распечатать только код продукта этого элемента. Понимаешь? Я опубликую код чуть позже, если смогу.
Ответ №3:
Вы можете использовать enumerate
. Например:
for index, i in enumerate(inputs):
print(index, i)
Это должно быть распечатано
0, 74283187
1, 15372185
Получение количеств тривиально: quantities[index]