如何重新分配一个新的有价值的变量

如何重新分配一个新的有价值的变量

问题描述:

因此,我创建一个非常简单的功能,分配一定数量的俯卧撑和仰卧起坐做每一天。代码如下:如何重新分配一个新的有价值的变量

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

“捷径” 当你分配给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() 

您必须在更新金额后重新格式化字符串,因为字符串不会“记住”将哪个变量替换为该字符串。

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)))