Мы можем сделать замечание, что 3 фрагмента (для каждого rates
элемента) эквивалентны, поэтому они могут быть преобразованы в функцию:
if (rates[0] <= 999):
rate1 = rates[0]
elif (rates[0] <= 999999):
rate1 = rates[0] / 1000
elif (rates[0] > 999999):
rate1 = rates[0] / 1000000
становится
def map_rate(rate):
if rate <= 999:
return rate
elif rate <= 999999:
return rate / 1000
else:
return rate / 1000000
и теперь вы можете назвать это как
rate1 = map_rate(rates[0])
rate2 = map_rate(rates[1])
rate3 = map_rate(rates[2])
, что уже хорошо. Однако нет реальной причины использовать свободные переменные (rate1
, et c.); вместо этого вы можете использовать понимание списка, чтобы сопоставить каждое значение в rates
с новым списком:
mapped_rates = [map_rate(rate) for rate in rates]
Затем довольно просто распечатать все сопоставленные показатели, независимо от их количества. Я использую функцию enumerate()
, чтобы также получить индекс курса.
for i, rate in enumerate(mapped_rates, 1):
print("Rate{}:\t{}".format(i, rate))
В общем, это становится (без объявления map_rate()
сверху):
rates = [3524, 4509353, 36333]
mapped_rates = [map_rate(rate) for rate in rates]
for i, rate in enumerate(mapped_rates, 1):
print("Rate{}:\t{}".format(i, rate))