简单的Python循环计数器问题

奥克斯

好的,我正在尝试制作一个简单的程序来测试我对事物的学习程度,我发现它变得非常大,因为我希望该程序将数据存储在部分中(Day1,Day2 ....等等),所以我尝试将其分配为读取当前的天数(Num_Days =),但它似乎并不喜欢这样。我做了一个小的测试循环,尝试测试是否可以做到这一点,尽管逻辑对我来说还是很不错的。我试图进行一些搜索,但是由于我不知道自己要做什么,所以我还没有走很远。我想做的是让循环读取Num_Days并给Days()计数,并通过'n'将其分配给该天。

Num_Days = 0
Total = 0
Data = 0
Day1 = 0
Day2 = 0
Day3 = 0
def Start_Work(x):
    while Num_Days < 3:
        Num_Days += 1
        print "This is Day:",Num_Days
        n = Num_Days
        Total = +20
        Day(n) += Total

    else:
        print "failed"

x = str('start')

我对此也做了dpaste,因为这样一来,与全黑相比,它就更容易使我看到它了:http : //dpaste.com/1398446/

为了弄清楚我在哪里失去了一些人,以为我只是想制作一个独立的循环,所以我将提出我打算将其用于什么的内容。该程序以我想要的方式运行,问题在于,如果我要使其扩大,它将变得很长。

NumDays = 0
TotalOut = 0
Day1Tot = 0
Day1_RepsCnt = 0
Day4 = 0
def Work_Out(x):
    while x == 1: ##crunches
        NumDays = 0
        TotalOut = 0
        Day1Tot = 0
        Day1_RepsCnt = 0
        Day1_WghtCnt = 0
        Day4 = 0
        while NumDays < 3:
            Day1_Wght = float(raw_input("How much weight did you use?"))
            Day1_Reps = float(raw_input("How many reps did you do?"))
            Day1_Sets = float(raw_input("How many sets were done?"))  

            Day1 = Day1_Wght * Day1_Reps * Day1_Sets
            NumDays += 1
            print "Day:",NumDays
            print "Your total output is:",Day1
            Day1_RepsCnt += Day1_Reps
            Day1_WghtCnt += Day1_Wght
            Day1Tot += Day1
            TotalOut += Day1


        if NumDays == 3:
          print "Your total output for 3 days is:",TotalOut
          print "Lets increase the Weight to",(Day1_Wght + 10)


        print "Increase the Weight for days 4-6"
        while NumDays >= 3 and NumDays <6:
            Day4_Wght = float(raw_input("How much weight did you use?"))
            if Day4_Wght <= (Day1_WghtCnt/3):
                  print "You need to increase your total output, add 10 pounds."
                  break
            Day4_Reps = float(raw_input("How many reps did you do?"))
            Day4_Sets = float(raw_input("How many sets were done?"))

            Day4 += Day4_Wght * Day4_Reps * Day4_Sets
            NumDays += 1
            print "Day:",NumDays

        if Day4_Wght <= (Day1_WghtCnt/3):
          print "Re-enter totals once you have added the additional weight."
        else :
          print "Your total output was:",Day4
    while x == 2: ##Benching
        NumDays = 0
        TotalOut = 0
        Day1Tot = 0
        Day1_RepsCnt = 0
        Day4 = 0
        while NumDays < 3:
            Day1_Wght = float(raw_input("How much weight did you use?"))
            Day1_Reps = float(raw_input("How many reps did you do?"))
            Day1_Sets = float(raw_input("How many sets were done?"))  

            Day1 = Day1_Wght * Day1_Reps * Day1_Sets
            NumDays += 1
            print "Day:",NumDays
            print "Your total output is:",Day1
            Day1_RepsCnt += Day1_Reps
            Day1Tot += Day1
            TotalOut += Day1


        if NumDays == 3:
          print "Your total output for 3 days is:",TotalOut
          print "Lets increase the Reps to",(Day1_Reps + 10)


        print "Increase reps for days 4-6"
        while NumDays >= 3 and NumDays <6:
            Day4_Wght = float(raw_input("How much weight did you use?"))
            Day4_Reps = float(raw_input("How many reps did you do?"))
            if Day4_Reps <= (Day1_RepsCnt/3):
                  print "You need to increase your total output, do 10 more Reps."
                  break
            Day4_Sets = float(raw_input("How many sets were done?"))

            Day4 += Day4_Wght * Day4_Reps * Day4_Sets
            NumDays += 1
            print "Day:",NumDays

        if Day4_Reps <= (Day1_RepsCnt/3):
          print "Re-enter totals once you have completed the additional reps."
        else :
          print "Your total output was:",Day4
print "Available work outs in this version: crunches, benching"        
Input = raw_input("What type of Work Out did you do?")
if Input.lower() ==  str('crunches'):
  Work_Out(1)
if Input.lower() == str('benching'):
  Work_Out(2)
else:
        print "Failed"

是的,我知道这需要清理,但是对于要放入的内容和要重新排列的内容,我还有其他想法,但是现在,它只是试图弄清楚如何将其分解为每周周期,并把每个星期都分解成每天的周期,所以我首先尝试度过一个星期并弄清楚,仅仅尝试超过2天是非常困难的,所以我将其分为2部分而不是6天。任何建议都欢迎。

视力

欢迎使用Python!

Python的优点之一是,绝大多数Python程序员在可能的情况下尝试以最“ Pythonic”的方式进行操作,因此,我要做的第一步是根据PEP-8标准对变量进行重命名。换句话说,类名将用大写的驼峰式大写,但标准变量应使用小写的下划线分隔。

其次,如果您发现自己使用诸如数字之类的数字来命名变量day1, day2, day3,请停下来并意识到如果必须将程序扩展到100天(或者1,000或10,000,可以理解),那将是多么难以维护。相反,您可以只使用一个名为的列表days,并根据一些配置变量(例如total_days在需要时添加任意数量的列表例如:

total_days = 3
days = []
for _ in range(total_days):
    days.append(0)

或者,使用列表推导来增强Python风格:

total_days = 3
days = [0 for _ in range(total_days)]

使用这些实现,您需要增加更多天数来要做的就是更改的值total_days考虑到所有这些,让我们尝试重现您的程序:

# method definition
def start_workouts(total_days, init_workout, workout_increase):
    workouts = [(init_workout + day * workout_increase) for day in range(total_days)]
    return workouts

# method execution (3 days, starting at 100, increasing 20 each day)
my_workouts = start_workouts(3, 100, 20)
# my_workouts == [100, 120, 140]
# my_workouts[0] is "Day1"
# my_workouts[1] is "Day2"
# my_workouts[2] is "Day3"

因此请注意,我们移动了一些变量声明,将其作为参数传递给您的方法。这样,您可以根据以后可能决定的各种情况轻松更改锻炼标准。另外,我们将所有计算减少为单个列表理解的一部分!(Python很棒吗?)

我希望我了解您要正确执行的操作,这对您有所帮助。如果您有任何疑问,请告诉我。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章