муратовый цикл питона усиливает вызов

Чтобы отфильтровать список dicts, вы можете использовать фильтр selectattr вместе с тестом equalto :

network.addresses.private_man | selectattr("type", "equalto", "fixed")

Для этого требуется Jinja2 v2 .8 или более поздней версии (независимо от версии Ansible).


. Сильно также имеет тесты match и search , которые принимают регулярные выражения:

match потребует полного совпадения в строке, тогда как search потребует совпадения внутри строки.

network.addresses.private_man | selectattr("type", "match", "^fixed$")

Чтобы уменьшить список dicts в список строк, поэтому вы получаете только список полей addr, вы можете использовать фильтр карты :

... | map(attribute='addr') | list

Или, если вы хотите строку с разделителями-запятыми:

... | map(attribute='addr') | join(',')

В сочетании, это будет выглядеть так.

- debug: msg={{ network.addresses.private_man | selectattr("type", "equalto", "fixed") | map(attribute='addr') | join(',') }}

-1
задан Hector Agosto 13 July 2018 в 22:45
поделиться

1 ответ

Пожалуйста, проверьте ниже код, сообщите мне, если он работает.

#!/usr/bin/env python3

    # display a welcome message
    print("Welcome to the Future Value Calculator")
    print()

    choice = "y"
    while choice.lower() == "y":

        # get input from the user
        while True:
            monthly_investment = float(input("Enter monthly investment:  "))
            if monthly_investment <= 0 :
                print("Entry must be greater than 0 . Please try again.")
                continue
            else:
                break

        while True:
            yearly_interest_rate = float(input("Enter yearly interest rate:  "))
            if yearly_interest_rate <= 0  or yearly_interest_rate >= 15:
                print("Entry must be greater than 0 and less than or equal to 15. Please try again.")
                continue
            else:
                break

        while True:
            years = int(input("Enter number of years: "))
            if years <= 0 or years >= 50:
                print("Entry must be greater than 0 and less than or equal to 50")
                continue
            else:
                break

         # convert yearly values to monthly values
        monthly_interest_rate = yearly_interest_rate / 12 / 100
        months = years * 12

        # calculate the future value
        future_value = 0
        for i in range(1,months+1):
            future_value += monthly_investment
            monthly_interest_amount = future_value * monthly_interest_rate
            future_value += monthly_interest_amount
            if i % 12 ==0:
            # display the result
                print("Year = {0} Future value:\t{1}".format(i//12,str(round(future_value, 2))))



        # see if the user wants to continue
        choice = input("Continue (y/n)? ")
        print()

    print("Bye!")
-1
ответ дан Mr. J 17 August 2018 в 12:06
поделиться
  • 1
    Не могли бы вы объяснить мне, какой психический процесс вам нужно пройти, чтобы закодировать это. Например, я рад, что это сработало, но я хочу иметь лучшее понимание, чтобы в будущем, если возникла такая проблема, у меня может быть некоторый опыт в ее обработке. Спасибо ! – Hector Agosto 14 July 2018 в 13:16
  • 2
    как в том, почему команда break приводит ее к следующему утверждению / вопросу, вместо того, чтобы возвращаться к исходному, пока True – Hector Agosto 14 July 2018 в 13:30
  • 3
    конечно, в первую очередь, эта программа не кодируется с учетом производительности. Я использовал много циклов, но вы можете достичь той же цели с помощью одиночного цикла while. – Mr. J 14 July 2018 в 14:16
  • 4
    У нас есть один бесконечный цикл while с множеством вложенных бесконечных циклов. Давайте поговорим о вложенных циклах. помните, когда вы находитесь в области внутреннего цикла while, в таком случае break, всегда заканчивается на основе включения отступа. который в то время как цикл. поэтому он прерывается от текущего цикла while. то же самое для других. Теперь давайте поговорим о цикле, условие, которое я добавил, основано на месяцах. поэтому кратность 12 будет засчитана как годы, просто покажите причудливую продукцию в год. – Mr. J 14 July 2018 в 14:16
Другие вопросы по тегам:

Похожие вопросы: