我的下面的代码没有达到预期的目的。
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等中的字符串?什么阻止它到达这个阶段?
答案 0 :(得分:1)
在Python 3中,input
函数始终返回一个字符串。因此,如果用户输入1
,则choice
将为"1"
,而不是您正在测试的整数1
。
由于我不明白的原因,您似乎编辑了问题以改变错误的方向。您要么int(input())
,要么需要针对"1"
进行测试。 (可能还有其他一些问题,但这是目前出现的代码中的主要问题。)