如何为Python中输入的用户字符串分配数值

时间:2018-09-26 20:03:23

标签: python python-3.6

我有一个学校作业,它要求许多用户输入,以确定用户是否想要牛奶,果汁及其大小。例如,牛奶的价格为4.00美元,升级到大型的成本为0.40美元。最后,输出应为ex。

大牛奶,价格:$ 4.55

我的问题是,如何为每个对应的字符串输入分配一个值?在以下代码的末尾,成本只是随字符串的总和而增加,而不是实际将每个成本的总和随即与总价值相随。我似乎无法弄清楚我应该在这里做什么。

3 个答案:

答案 0 :(得分:2)

在最后一行计算费用:

subtotal=(askSize + askBeverage + askFlav)

您不对在文件顶部定义的变量求和(包括费用),但是将用户键入的字符串连接起来。例如askSize可以是字符串“ small”。因此,您在这里所做的可以写为:

subtotal=("small" + "tee" + "lemon")

在Python中,在字符串之间使用+将它们连接起来。这意味着它将一个接一个地添加字符串以形成更大的字符串。例如:"foo" + "bar" = "foobar"

如果要参考每个选项的成本,一个解决方案(但还有其他解决方案)将是使用字典来存储成本,而不是像以前那样存储多个变量:

# Dictionary of costs
costs = {"tea": 1.50,
         "coffee": 1.50,
         "small": 0,
         "medium": 0.75,
         "large": 1.75,
         "mint": 0.50,
         "lemon": 0.25,
         "chocolate": 0.75,
         "vanilla": 0.25,
         "none": 0
         }

然后,要获取与字符串对应的数字,请从字典中获取项目:

tea_cost = costs["tea"]  # tea_cost will be equal to 1.50
ask_size_cost = costs[askSize]  # ask_size_cost will be equal to the cost of the asked size

现在,您很容易获得总费用:

total_cost = costs[askSize] + costs[askBeverage] + costs[askFlav]

当然,要注意字符串的大小写,在我的示例中,所有内容都必须小写。

希望有帮助!

注意:您可以对其余代码进行许多改进,不要犹豫,在互联网上阅读一些Python代码以使其变得更好。

答案 1 :(得分:0)

您需要一个从未声明过的subtotal变量,然后在每个选项选择之后都要+=对其进行递增:

subtotal = 0

askName = str(input("What is your name?")).title()
askBeverage = str(input("What type of beverage would you like?")).title()

if askBeverage.lower() in ("t", "tea"): #ensures any variation of upper/lowercase will work

    subtotal += 1.50

    askSize = str(input("Would you like a small, medium, or large Tea?")).title() # SIZE

    if askSize.lower() in ("small", "s"):
        subtotal += 0
    elif askSize.lower() in ('medium', 'm'):
        subtotal += .75
    elif askSize.lower() in ('large', 'l'):
        subtotal += 1.75
    else:
        print("Invalid size specified.")
        sys.exit()

    askFlav =str(input("Any flavourings for your Tea? Your options are mint, lemon, or none")).title() # FLAVOURING

    if askFlav.lower() in ("m", "mint"):
        subtotal += .50
    elif askFlav.lower() in ("l", "lemon"):
        subtotal += .25
    elif askFlav.lower() in ('none', 'n'):
        subtotal += 0
    else:
        print("Invalid flavour specified.")
        sys.exit()

答案 2 :(得分:-1)

您的askSize,askBeverage,askFlav是字符串,因此您不能在不将其转换为数字的情况下添加它们。最直接的解决方案是将它们更改为float。 subtotal=float(askSize) + float(askBeverage) + float(askFlav) print("For {}, a {} {}, with {:.2f} flavoring, cost: {}".format(askName,askSize,askBeverage,askFlav, subtotal)) 看来您才刚刚开始学习编程。 Python是入门的好语言。请尽情享受!