2013-12-22 46 views
0

這是我最後一個問題的重新發布,它不是很清楚。以下是我有:使用變量和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] 

此代碼不斷給我的答案250由於某些原因,當我輸入2.我希望的答案52,當我輸入2.我認爲正在發生的事情是它是在50的前面添加添加的數字I輸入,而不是添加50 +輸入來查找2個數字的總和。無論如何,我可以解決這個問題嗎?

+0

CF [P1] = NUM​​ + CF [P1]似乎是剛纔前面加上2你的當前值爲50,給250,但它不應該發生,因爲你正在用int(50)串聯一個字符串('2')... – Totem

+0

如果你的程序需要數字,爲什麼你要調用'str .lower「的輸入? – iCodez

回答

2
float(num) 

不會改變num它返回字符串num的浮點數的浮動。嘗試

num = float(num) 

而且,你在字符串inc,這將永遠是True只要有一個值做比較inc > 0。在做這件事之前,你應該把輸入投入到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] 
+0

此作品謝謝 – user2757442

+0

優秀。我很高興能夠提供幫助。以下是接受SO的答案的參考。 http://meta.stackexchange.com/a/5235/245475最佳做法是在問題解決後接受答案。 – bnjmn

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]現在本身是一個浮動。當您將一個int添加到浮點數時,結果 是一個浮點數。

+1

我不會推薦在運行'eval'時使用'input',並可能導致意想不到的後果。國際海事組織,讀取字符串並相應地用'raw_input'投射它更安全。我想,取決於應用程序。 – bnjmn

+0

你是對的,這是不必要的。謝謝 – Totem

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) 

我做了一個簡單的函數