使用变量和raw_input添加到字典的值

时间:2013-12-22 15:26:02

标签: python variables dictionary raw-input

这是我最后一个问题的重新发布,不太清楚。这就是我所拥有的:

cf={p1:50}
inc = raw_input('Enter Amount of Increase: ').lower()
if inc > 0:
    num = inc
    float(num)
    for p1 in cf:
        cf[p1] = num + cf[p1]

print cf[p1]

当我输入2时,由于某种原因,此代码继续给我答案250.我希望在输入2时得到答案52.我认为发生的事情是添加我在前面输入的数字50而不是添加50 +输入来查找2个数字的总和。无论如何我可以解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

float(num)

不会将num更改为float,而是返回字符串num的浮点数。尝试

num = float(num)

此外,您正在对字符串inc > 0进行比较inc,只要它具有值,它就始终为True。在执行此操作之前,您可能应该将输入转换为float

cf = {p1: 50}
inc = raw_input('Enter Amount of Increase: ')
num = float(inc)
if num > 0:
    for p1 in cf:
        cf[p1] = num + cf[p1]

print cf[p1]

答案 1 :(得分:1)

inc是输入时的字符串,'2'

示例:

>>>    inc = raw_input("Enter number: ")
Enter number: 2
>>>    type(inc)
str

cf[p1]的值是一个int 50,根据你上面的代码

实际上将num转换为你需要做的浮动

num = float(num)

float(num)本身不进行任务

所有在一起:

inc = input("Enter Amount of Increase: ")
num = float(inc) #shorter way
if num > 0:
    for p1 in cf:
        cf[p1] += num # adds num to the value in cf[p1]

print cf[p1]

请注意,cf [p1]现在本身就是一个浮点数。将结果添加到浮点数时 是一个漂浮物。

答案 2 :(得分:0)

以下是我使用bnjmn的答案所做的:

inc = raw_input('Enter Amount of Increase: ').lower()
def cva(x):
    return x + 50
if inc > str(0):
    num = inc
    num = float(num)
    print cva(num)

我做了一个简单的功能