2017-06-20 103 views
-1

因此,我創建一個非常簡單的功能,分配一定數量的俯臥撐和仰臥起坐做每一天。代碼如下:如何重新分配一個新的有價值的變量

import random 

def exercise_rep_num(): 
    situps = random.randint(50,75) 
    situps_feedback = 'You need to do %s situps today!' % situps 
    print(situps_feedback) 

    pushups = random.randint(25,65) 
    pushups_feedback = 'You need to do %s pushups today!' % pushups 
    print(pushups_feedback) 

    if situps >= 70: 
     print("Making it easier...") 
     pushups = random.randint(25,40) 
     print(pushups_feedback) 

    elif pushups >= 60: 
     print("Making it easier...") 
     situps = random.randint(30,60) 
     print(situps_feedback) 

    elif pushups >= 60 and situps >= 70: 
     print("Making it easier... Hooray! No workout tofay :)") 

exercise_rep_num() 

我希望函數能夠改變「pushups_feedback」和「situps_feedback」價值觀一旦「if語句」開始。例如,我得到了71的「仰臥起坐」值,所以俯臥撐的價值應該會下降。但是,函數將「pushups_feedback」打印爲與之前相同的值。有什麼建議麼?

+2

你正在設置'俯臥撐',然後打印'pushups_feedback'。 – Barmar

回答

0

「捷徑」 當你分配給pushups_feedback,它替換當時該變量放入模板中。它不記得與變量的關係,因此重新分配變量不會更新字符串。

你可以編寫一個函數來顯示消息,並在兩個地方調用該函數。

def print_pushups(pushups): 
    pushups_feedback = 'You need to do %s pushups today!' % pushups 
    print(pushups_feedback) 
def print_situps(situps): 
    situps_feedback = 'You need to do %s situps today!' % situps 
    print(situps_feedback) 

def exercise_rep_num(): 
    situps = random.randint(50,75) 
    situps_feedback = 'You need to do %s situps today!' % situps 
    print(situps_feedback) 

    pushups = random.randint(25,65) 
    pushups_feedback = 'You need to do %s pushups today!' % pushups 
    print(pushups_feedback) 

    if situps >= 70: 
     print("Making it easier...") 
     pushups = random.randint(25,40) 
     print_pushups(pushups) 

    elif pushups >= 60: 
     print("Making it easier...") 
     situps = random.randint(30,60) 
     print_situps(situps) 

    elif pushups >= 60 and situps >= 70: 
     print("Making it easier... Hooray! No workout tofay :)") 

exercise_rep_num() 
0

您必須在更新金額後重新格式化字符串,因爲字符串不會「記住」將哪個變量替換爲該字符串。

pushups = random.randint(25,40) 
print('You need to do %s pushups today!' % pushups) 

你也可以定義一個方法,像這樣做出的所有訓練

def feedback(workout, amt): 
    return 'You need to do %d %s today!' % (amt, workout) 

然後

print(feedback('pushups', random.randint(25,40))) 
相關問題