我怎样才能使输入与我的参数一起工作?
how can i make the input work with my parameters?
我已经开始 python class 但我的书似乎对我没有帮助。
我的教授有一个程序用不同的输入轰炸我的代码,如果任何输入不起作用,那么我的代码就是 "wrong"。我已经做了很多天的编辑工作,但完全不知所措。如果有人输入并输入实际数字,我的代码就会工作。但是我的代码测试失败的地方是如果输入是 "miles_to_laps(26)" 它会出错。
我已经尝试将输入更改为 int(input()) 但这并不能解决问题。我经历了更改变量甚至更改输入法,但仍然不知所措。我已经尝试联系我的老师,但是 6 天没有回复,3 天迟到,我觉得我哪儿也去不了。
user_miles = int(input())
def miles_to_laps(user_miles):
x = user_miles
y = 4
x2 = x * y
result = print('%0.2f' % float(x2))
return result
miles_to_laps(user_miles)
我的代码适用于实数输入,但我的教授想要像这样的输入
miles_to_laps(26) 和 miles_to_laps(13) 创建相同的输出。
我想把所有的学究都放在一边,但那是什么CS/programming教学?
关注领域:
- 将用户输入与其余代码分开
- 将输出格式与函数输出分开
- miles_to_laps里面的代码过多
下面是要尝试的代码:
LAPS_PER_MILE = 4
# the only calculation, "pure" function
def miles_to_laps(miles):
return LAPS_PER_MILE * miles
# sorting out valid vs invalid input, "interface"
def accept_input(user_input):
try:
return float(user_input)
except ValueError:
raise ValueError("Cannot process input %s" % user_input)
if __name__ == "__main__":
# running the program
laps = miles_to_laps(accept_input(input()))
print ('%0.2f' % laps)
希望这不会太过分。
更新:第二次尝试
MILE = 1609.34 # meters per mile
LAP = 400 # track lap
LAPS_PER_MILE = MILE/LAP
def miles_to_laps(miles):
return LAPS_PER_MILE * miles
def laps_coerced(laps):
return '%0.2f' % laps
def accept_input(user_input):
try:
return float(user_input)
except ValueError:
raise ValueError("Cannot process input %s" % user_input)
def main(user_input_str):
miles = accept_input(user_input_str)
laps = miles_to_laps(miles)
print (laps_coerced(laps))
if __name__ == "__main__":
main(input())
对于奇怪的输入功能,您可以尝试:
import re
def parse_function_text(s):
try:
return re.search("miles_to_laps\((.+)\)", s)[1]
except TypeError:
return None
def accept_input(user_input):
desugar = parse_function_text(user_input)
if desugar is not None:
user_input = desugar
try:
return float(user_input)
except ValueError:
raise ValueError("Cannot process input %s" % user_input)
assert accept_input("miles_to_laps(3.5)") == 3.5
我已经开始 python class 但我的书似乎对我没有帮助。 我的教授有一个程序用不同的输入轰炸我的代码,如果任何输入不起作用,那么我的代码就是 "wrong"。我已经做了很多天的编辑工作,但完全不知所措。如果有人输入并输入实际数字,我的代码就会工作。但是我的代码测试失败的地方是如果输入是 "miles_to_laps(26)" 它会出错。
我已经尝试将输入更改为 int(input()) 但这并不能解决问题。我经历了更改变量甚至更改输入法,但仍然不知所措。我已经尝试联系我的老师,但是 6 天没有回复,3 天迟到,我觉得我哪儿也去不了。
user_miles = int(input())
def miles_to_laps(user_miles):
x = user_miles
y = 4
x2 = x * y
result = print('%0.2f' % float(x2))
return result
miles_to_laps(user_miles)
我的代码适用于实数输入,但我的教授想要像这样的输入 miles_to_laps(26) 和 miles_to_laps(13) 创建相同的输出。
我想把所有的学究都放在一边,但那是什么CS/programming教学?
关注领域:
- 将用户输入与其余代码分开
- 将输出格式与函数输出分开
- miles_to_laps里面的代码过多
下面是要尝试的代码:
LAPS_PER_MILE = 4
# the only calculation, "pure" function
def miles_to_laps(miles):
return LAPS_PER_MILE * miles
# sorting out valid vs invalid input, "interface"
def accept_input(user_input):
try:
return float(user_input)
except ValueError:
raise ValueError("Cannot process input %s" % user_input)
if __name__ == "__main__":
# running the program
laps = miles_to_laps(accept_input(input()))
print ('%0.2f' % laps)
希望这不会太过分。
更新:第二次尝试
MILE = 1609.34 # meters per mile
LAP = 400 # track lap
LAPS_PER_MILE = MILE/LAP
def miles_to_laps(miles):
return LAPS_PER_MILE * miles
def laps_coerced(laps):
return '%0.2f' % laps
def accept_input(user_input):
try:
return float(user_input)
except ValueError:
raise ValueError("Cannot process input %s" % user_input)
def main(user_input_str):
miles = accept_input(user_input_str)
laps = miles_to_laps(miles)
print (laps_coerced(laps))
if __name__ == "__main__":
main(input())
对于奇怪的输入功能,您可以尝试:
import re
def parse_function_text(s):
try:
return re.search("miles_to_laps\((.+)\)", s)[1]
except TypeError:
return None
def accept_input(user_input):
desugar = parse_function_text(user_input)
if desugar is not None:
user_input = desugar
try:
return float(user_input)
except ValueError:
raise ValueError("Cannot process input %s" % user_input)
assert accept_input("miles_to_laps(3.5)") == 3.5