Q:

Why are my non-active variables picking up prices?

A simple program to help me calculate costs for some new flooring, but my final outputs are not what i expect. 
In particular, when underlay is "No", the variable for underlayarea is still picking up a value and being printed at the end.
If it isn't painfully obvious, this is my first crack at it. Ever. 
I was expecting that while the variables for 'edging' and 'underlay' remained "No" that no values would be stored in that while loop.
underlay='No'
edging=input('Are you ordering Edging?').title()
underlay=input('Are you ordering underlay?').title()
roomsize=input('How many square meters is the room?')
roomflt=float(roomsize)
while edging =='Yes':
    #ask for user inputs
    edgeprice=input("How much is the edging per meter?")
    edgeperim=input('What is the perimeter of the room?')
    #convert to float for calculation
    one=float(edgeperim)
    two=float(edgeprice)
    #calculate
    edgearea=one*two
    #reset flag
    edging='No'
while underlay=='Yes':
    #ask for user input
    underlayprice=input('How much per square meter for the Underlay?')
    #convert to float for calculation
    three=float(underlayprice)
    four=float(roomflt)
    #calculate
    underlayarea=three*four
    #reset flag
    underlay='No'
#set the floor price
floorprice=input("How much is the floor per square meter?")
#convert to float for calculation
five=float(floorprice)
six=float(roomflt)
#calculate
area=five*six
#get the cost
addemup=(edgearea+underlayarea+area)
print("\n----------------------------------------------\nThe total is £{0:.2f} to purchase the flooring.".format(addemup))
print("This is made up of £{0:.2f} for the floor itself,".format(area))
print("This is made up of £{0:.2f} for the edging,".format(edgearea))
print("and £{0:.2f} for the underlay".format(underlayarea))

A:

You should use simple if-statements instead of using a while-loop and "resetting the flag" at the bottom of the loop. I also improved readability of your code by giving the variables telling names (never give variables names such as one, two and so on). You also have to define edgearea and underlayarea, because else a NameError would be raised in case the user does enter "No" in at least one of the inputs.
edgearea = 0
underlayarea = 0

edging = input('Are you ordering Edging?').title()
underlay = input('Are you ordering underlay?').title()
roomsize = input('How many square meters is the room?')
roomsize = float(roomsize)

if edging == 'Yes':
    edgeprice = float(input("How much is the edging per meter?"))
    edgeperim = float(input('What is the perimeter of the room?'))
    edgearea = edgeperim * edgeprice

if underlay == 'Yes':
    underlayprice = float(input('How much per square meter for the Underlay?'))
    underlayarea = underlayprice * roomsize

floorprice = float(input("How much is the floor per square meter?"))
area = floorprice * roomsize

total_price = edgearea + underlayarea + area
print(f"\n----------------------------------------------\nThe total is {total} to purchase the flooring.")
print(f"This is made up of {area} for the floor itself,")

if edgearea:
    print(f"This is made up of {edgearea} for the edging,")

if underlayarea:
    print(f"and {underlayarea} for the underlay")

I would also like to recommend having a look at the DRY principle, aka "Don't repeat yourself". The three calculations have basically the same form. That's why it would be better code style to define a function for these calculations which takes the necessary parameters. A DRY solution could look similar to the following:
def calculate(
    name: str,
    dimension: str,
    unit: str,
    mandatory: bool = True,
) -> float:
    mandatory = mandatory or input(f"Do you order {name}?") == "Yes"
    if mandatory:
        relative_price = float(input(f"How much is the {name} per {unit}?"))
        size = float(input(f"How much {dimension} is the room?"))

        return size * relative_price

    return 0

floor_price = calculate("floor", "area", "squaremeters")
edging_price = calculate("edging", "perimeter", "meters", False)
underlay_price = calculate("underlay", "area", "squaremeters", False)

total_price = floor_price + edging_price + underlay_price

