Я написал программу для решения задач для моей главы по физике, которая берет все данные и делает с ними все возможное.Я использовал длинную строку операторов if, чтобы проверить, какие функции безопасно вызывать (сами функции небезопасны), но я чувствую, что должен быть лучший способ сделать это.
полный код здесь
Вот фрагмент кода нарушителя (по умолчанию Argparse отсутствует):
# EVALUATE:
if args.t and args.ld:
print 'Velocity:', find_velocity(args.t, args.ld)
if args.t and args.l and args.m:
print 'Velocity:', find_velocity(args.t, args.l, args.m)
if args.l:
print 'Longest possible standing wave length:', find_longest_possible_standing_wave_length(args.l)
if args.l and args.m and args.t and args.n:
print 'Frequency of the standing wave with', args.n, 'nodes:', find_nth_frequency_standing_wave(args.t, args.n, args.l, args.m)
if args.s and args.t and args.n and args.l:
print 'Frequency of', args.n, 'standing wave:', find_nth_frequency_standing_wave(args.t, args.n, args.l, velocity=args.s)
if args.ld and args.t and args.f:
print 'Angular wave number: ', find_angular_wave_number(args.ld, args.t, args.f)
if args.p:
print 'Difference in amplitude of twins:', find_amplitude_difference_of_twins(args.p)
if args.f:
print 'Angular wave frequency:', find_angular_wave_frequency(args.f)
Спасибо!