我是Python的初学者,如果这是一个基本问题,请道歉
我正在尝试编写一个代码,该代码将遍历需要完成的小时输入表,并减去创建的轮班,直到没有剩余时间分配。到目前为止,我有一个输入文件,我可以阅读,如下所示:
f=open('filepath','r')
f1=f.read()
print f1
6,9
7,10
8,10
9,10
10,6
告诉我早上6点我需要9个小时,早上7点10个小时等等。
我创建了一个转变如下:
def shiftn():
start=6
length=4
for start in range (start,start+length-1):
print start,1
print shiftn()
6 1
7 1
8 1
9 1
现在我想从输入文件中减去转换,将开始时间映射到彼此,以便我最终得到以下内容:
6,8
7,9
8,9
9,9
10,6
从上午6点开始并持续4小时的班次从最初的所需时间减去,留下需要分配给班次的剩余时间。
如何将时间相互映射/执行此操作?
非常感谢任何帮助 - 我将继续为初学者阅读Python!
答案 0 :(得分:0)
我编写了这段代码,我会尝试对其进行评论,以便您了解,您必须了解列表才能了解其工作原理。
<强>代码:强>
def readFile():
f = open('sample.txt', 'r')
f1 = f.read()
# Each row of the file will be stored as a list inside the list 'rows'
rows = []
# split('delimiter') just splits the string 'f1', and return a list of strings. Read more in documentation
for l in f1.split('\n'):
rows.append(l.split(',')) # Append each row (list) to 'rows'
return rows
def shiftn():
start = 6
length = 4
shifts = [] # Added to return a list of shifts values
for start in range (start, start + length - 1):
shifts.append([str(start), 1]) # Instead of print, append it to the list 'shifts'
return shifts
def substract(rows, shifts): # Receive as parameters the result of readFile() and shiftn()
new_rows = rows[:] # Make a copy of 'rows'
for i in range(len(rows)):
for shift in shifts: # Iterate over each shift
if shift[0] == rows[i][0]: # If the first values matches
new_rows[i][1] = int(rows[i][1]) - shift[1] # Substract and assign the value to the corresponding row in 'new_rows'
return new_rows
print substract(readFile(), shiftn())
<强>输出:强>
>>> [['6', 8], ['7', 9], ['8', 9], ['9', '10'], ['10', '6']]
PS:你的方法shiftn()
没有提供你想要的输出,你可能想修改它。