2012-12-29 79 views
1

我有一個名稱列表,例如,木工,工程總共15個。 在下面的代碼片段中,我將其稱爲name1,但是對變量名稱沒有序列。 而不是寫這個代碼15次,我怎麼可以創建一個函數,每次更改名稱時執行相同的條件。使用不同變量創建函數

name1= int(raw_input("Please enter your value for name1: ")) 
if name1 <5: 
status = "nill" 
total = 0 
if name1 >4 and name1 <8: 
status = "valid" 
total=1 
if name1 >7 and name1 <12: 
status = "superb" 
total=5 
if name1 >11: 
status = "over qualified" 
total=10 
print "this is your current status ",status 
print "this equals ",total 
+0

每次不要更改名稱。改用字典或列表。 –

+0

@miguel請爲您的代碼使用正確的格式(縮進)。它是Python,縮進很重要。 – informatik01

回答

1

我相信這是做你正在尋找的。請注意,這可能不是你想要存儲的個人狀態(一defaultdict可能會更有意義)的方式,但希望這是有道理的,從概念的角度來看:

def comparisons(value): 
    """Only change here is using x <= y < z syntax.""" 
    if value < 5: 
     status = 'nill' 
     total = 0 
    elif 5 <= value < 8: 
     status = 'valid' 
     total = 1 
    elif 8 <= value < 12: 
     status = 'superb' 
     total = 5 
    else: 
     status = 'over-qualified' 
     total = 10 
    # Here we return the status and the total for each item 
    # This may not be what you want, so this can be adjusted 
    return status, total 


# Create a list that will contain your 15 items 
items = ['Engineering', 'Carpentry'] 

# Create a container to hold the results. 
# Note that we don't use different variables names each time - 
# instead, we create an entry in a dictionary corresponding to 
# our 'items' values. 
results = {} 

# Now we iterate through each item in our items list, running 
# our function and storing the results. Note that this is a guess 
# as to how you want to handle 'status' - a more useful solution 
# could be to use a nested dictionary where each item has a dictionary 
# with two sub-fields: 'status' and 'total'. 
for item in items: 
    status, total = comparisons(int(raw_input('{0}: '.format(item)))) 
    results[item] = [status, total] 

# Print out each item 
print '\nIndividual items:' 
for item, values in results.iteritems(): 
    print item, values 

# Example of how you could sum the totals 
print '\nTotal score:' 
print sum((results[x][1] for x in results)) 

輸出:

Engineering: 10 
Carpentry: 5 

Individual items: 
Engineering ['superb', 5] 
Carpentry ['valid', 1] 

Total scores: 
6