如何根据训练类型计算数值?
How to calculate values depending on the training type?
我有几种具有关联值的编号类型的培训。
可能的培训类型:
小:0.5
大:0.7
小:0.7
大:0.8
等...
如果选择训练类型 1,如何确定用于计算的关联值对?例如,如果训练类型是 1:
small = (220 - 60)*0.5
big = (220 - 60)*0.7
我想知道如何编写代码,使后续计算中使用的值根据所选的训练类型而变化。
我目前拥有的:
training = str(input("Choose training type (1, 2, 3): "))
s1 = 0.5
s2 = 0.7
s3 = 0.8
b1 = 0.7
b2 = 0.8
b3 = 0.88
spulse = "Small pulse: "
bpulse = "Big pulse: "
if training == 1:
small = (220 - 60) * s1
big = (220 - 60) * b1
elif training == 2:
small = (220 - 60) * s2
big = (220 - 60) * b2
elif training == 3:
small = (220 - 60) * s3
big = (220 - 60) * b3
print(spulse + str(small) + bpulse + str(big))
如果您使用内置输入功能,您可以执行以下操作:
question=input('Choose type 1 or type 2: ')
if question=='1':
small=(220-60)*0.5
big=(220-60)*0.7
type1_total=small+big
print(type1_total)
结果:
192.0
如果您将 input
转换为 int
而不是 str
并且如果您在外部初始化 small
和 big
像这样的决定性陈述:
training = int(input("Choose training type (1, 2, 3): "))
s1 = 0.5
s2 = 0.7
s3 = 0.8
b1 = 0.7
b2 = 0.8
b3 = 0.88
spulse = "Small pulse: "
bpulse = "Big pulse: "
small = 0
big = 0
if training == 1:
small = (220 - 60) * s1
big = (220 -60) * b1
elif training == 2:
small = (220 - 60) * s2
big = (220 -60) * b2
elif training == 3:
small = (220 - 60) * s3
big = (220 -60) * b3
但是,一种替代方法可能如下:
value = 220 - 60
type_ = 0
types = {1 : [0.5, 0.7],
2 : [0.7, 0.8],
3 : [0.8, 0.88]}
while type_ not in types:
type_ = int(input("Pick a type: "))
if type_ not in types:
print("Invalid type.")
else:
big = value * types[type_][0]
small = value * types[type_][1]
print("Big = " + str(big))
print("Small = " + str(small))
这样,如果用户在提示符下输入 1
作为 type_
的值,则输出为:
Big = 80.0
Small = 112.0
但是,如果用户在提示符下输入2
作为type_
的值,则输出为:
Big = 112.0
Small = 128.0
如果用户在提示符下输入3
作为type_
的值,则输出为:
Big = 128.0
Small = 140.8
对于输入的任何其他值,输出为 print("Invalid type.")
。
在 Python 3 中 input()
函数 returns 一个字符串(不同于 Python 2),但是你所有的 if training == ...
语句都在比较这个值它返回一个整数,所以它们总是会失败。要修复该问题,请更改第一行,如下所示:
#training = str(input("Choose training type (1, 2, 3): ")) # NOT THIS.
training = int(input("Choose training type (1, 2, 3): ")) # Convert to integer.
s1 = 0.5
s2 = 0.7
s3 = 0.8
b1 = 0.7
b2 = 0.8
b3 = 0.88
spulse = "Small pulse: "
bpulse = " Big pulse: "
if training == 1:
small = (220 - 60) * s1
big = (220 - 60) * b1
elif training == 2:
small = (220 - 60) * s2
big = (220 - 60) * b2
elif training == 3:
small = (220 - 60) * s3
big = (220 - 60) * b3
print(spulse + str(small) + bpulse + str(big))
产生的输出:
Small pulse: 80.0 Big pulse: 112.0
更新
最好使用 Python 词典来完成此操作。这样做——被称为 "data-driven"——也将使调试和扩展变得更容易,方法是添加更多的训练类型 and/or,每个训练类型都有更多的相关值。我认为它还使代码更清晰、更易读。
这表明我的意思:
# Dictionary associating each training type to associated values.
training_types = {
"1": {"s": 0.5, "b": 0.7},
"2": {"s": 0.7, "b": 0.8},
"3": {"s": 0.8, "b": 0.88}
}
choice = None
while choice not in training_types:
choice = input("Choose training type (1, 2, or 3): ")
training_type = training_types[choice]
difference = 220 - 60
small = difference * training_type["s"]
big = difference * training_type["b"]
print("Small pulse: {} Big pulse: {}".format(small, big))
我有几种具有关联值的编号类型的培训。
可能的培训类型:
小:0.5
大:0.7小:0.7
大:0.8等...
如果选择训练类型 1,如何确定用于计算的关联值对?例如,如果训练类型是 1:
small = (220 - 60)*0.5
big = (220 - 60)*0.7
我想知道如何编写代码,使后续计算中使用的值根据所选的训练类型而变化。
我目前拥有的:
training = str(input("Choose training type (1, 2, 3): "))
s1 = 0.5
s2 = 0.7
s3 = 0.8
b1 = 0.7
b2 = 0.8
b3 = 0.88
spulse = "Small pulse: "
bpulse = "Big pulse: "
if training == 1:
small = (220 - 60) * s1
big = (220 - 60) * b1
elif training == 2:
small = (220 - 60) * s2
big = (220 - 60) * b2
elif training == 3:
small = (220 - 60) * s3
big = (220 - 60) * b3
print(spulse + str(small) + bpulse + str(big))
如果您使用内置输入功能,您可以执行以下操作:
question=input('Choose type 1 or type 2: ')
if question=='1':
small=(220-60)*0.5
big=(220-60)*0.7
type1_total=small+big
print(type1_total)
结果:
192.0
如果您将 input
转换为 int
而不是 str
并且如果您在外部初始化 small
和 big
像这样的决定性陈述:
training = int(input("Choose training type (1, 2, 3): "))
s1 = 0.5
s2 = 0.7
s3 = 0.8
b1 = 0.7
b2 = 0.8
b3 = 0.88
spulse = "Small pulse: "
bpulse = "Big pulse: "
small = 0
big = 0
if training == 1:
small = (220 - 60) * s1
big = (220 -60) * b1
elif training == 2:
small = (220 - 60) * s2
big = (220 -60) * b2
elif training == 3:
small = (220 - 60) * s3
big = (220 -60) * b3
但是,一种替代方法可能如下:
value = 220 - 60
type_ = 0
types = {1 : [0.5, 0.7],
2 : [0.7, 0.8],
3 : [0.8, 0.88]}
while type_ not in types:
type_ = int(input("Pick a type: "))
if type_ not in types:
print("Invalid type.")
else:
big = value * types[type_][0]
small = value * types[type_][1]
print("Big = " + str(big))
print("Small = " + str(small))
这样,如果用户在提示符下输入 1
作为 type_
的值,则输出为:
Big = 80.0
Small = 112.0
但是,如果用户在提示符下输入2
作为type_
的值,则输出为:
Big = 112.0
Small = 128.0
如果用户在提示符下输入3
作为type_
的值,则输出为:
Big = 128.0
Small = 140.8
对于输入的任何其他值,输出为 print("Invalid type.")
。
在 Python 3 中 input()
函数 returns 一个字符串(不同于 Python 2),但是你所有的 if training == ...
语句都在比较这个值它返回一个整数,所以它们总是会失败。要修复该问题,请更改第一行,如下所示:
#training = str(input("Choose training type (1, 2, 3): ")) # NOT THIS.
training = int(input("Choose training type (1, 2, 3): ")) # Convert to integer.
s1 = 0.5
s2 = 0.7
s3 = 0.8
b1 = 0.7
b2 = 0.8
b3 = 0.88
spulse = "Small pulse: "
bpulse = " Big pulse: "
if training == 1:
small = (220 - 60) * s1
big = (220 - 60) * b1
elif training == 2:
small = (220 - 60) * s2
big = (220 - 60) * b2
elif training == 3:
small = (220 - 60) * s3
big = (220 - 60) * b3
print(spulse + str(small) + bpulse + str(big))
产生的输出:
Small pulse: 80.0 Big pulse: 112.0
更新
最好使用 Python 词典来完成此操作。这样做——被称为 "data-driven"——也将使调试和扩展变得更容易,方法是添加更多的训练类型 and/or,每个训练类型都有更多的相关值。我认为它还使代码更清晰、更易读。
这表明我的意思:
# Dictionary associating each training type to associated values.
training_types = {
"1": {"s": 0.5, "b": 0.7},
"2": {"s": 0.7, "b": 0.8},
"3": {"s": 0.8, "b": 0.88}
}
choice = None
while choice not in training_types:
choice = input("Choose training type (1, 2, or 3): ")
training_type = training_types[choice]
difference = 220 - 60
small = difference * training_type["s"]
big = difference * training_type["b"]
print("Small pulse: {} Big pulse: {}".format(small, big))