2016-06-08 5 views
0

Неверный код пользователя не достигает цели.Неподходящая часть кода

print("Welcome to the Stockroom\n")  
print("The following products need new stock:\n") 
f = open("lowstock","r") 
print(f.read()) 
choice = input("\nTo update the stock levels of the above products, type 1. To cancel, enter anything else.") 
if choice == '1': 
    with open('stockcontrol.csv',newline='') as f: 
     for line in f: 
      data = line.split(",") 
      productcode = int(data[0]) 
      target = int(data[2]) 
      stocklevel = int(data[1]) 
      if stocklevel <= 5: 
       target = str(target) 
       import sys 
       import csv 
       data=[] 
       # code = code 
       newval= target 
       newtlevel = "0" 
       f=open("stockcontrol.csv") 
       reader=csv.DictReader(f,fieldnames=['code','level', 'target', 'distancefromtarget']) 
       for line in reader: 
        line['level']= newval 
        line['distancefromtarget']= newtlevel 
        data.append('%s,%s,%s,%s'%(line['code'],line['level'],line['target'],line['distancefromtarget'])) 
        f.close() 
        f=open("stockcontrol.csv","w") 
        f.write("\n".join(data)) 
        f.close() 
        print("The stock levels were updated successfully") 
else: 
    print("Goodbye") 

Если 1 вводится на вход выбора, программа просто завершается - любые идеи, почему она не заменяет строку в файл CSV и т.д.? Что мешает ему достичь этой стадии?

+1

Какая версия Python? 'input()' отличается от Py2 и Py3, поэтому вход может быть интерпретирован как целое. Попробуйте 'if str (выбор) ==" 1 ": ...' – linusg

+0

То же самое происходит @linusg - Я нахожусь на Python 3.4.2 –

+0

Итак, он печатает 'Goodbye'? Этого не может быть ... – linusg

ответ

1

В Python 3 функция input всегда возвращает строку. Поэтому, если пользователь вводит 1, choice будет "1", а не целое число 1, которое вы тестируете.

Вы, кажется, отредактировали вопрос, чтобы изменить ситуацию в неправильном направлении по причинам, которые неясны для меня. Вы либо хотите int(input()), либо вам нужно протестировать "1". (Могут возникнуть другие дополнительные проблемы, но это основной код с кодом, который появляется на данный момент.)

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