将新表中的值映射到Python中的输入

时间:2013-12-27 18:16:01

标签: python

我是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!

1 个答案:

答案 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()没有提供你想要的输出,你可能想修改它。