2017-06-03 98 views
1

我一直在做一段時間的自動化百葉窗/窗簾項目現在一切正常,但我想添加百葉窗在早上逐漸打開的功能。我正在從配置文件中讀取我的值,並將值轉換爲可正常工作的字符串,但由於某些原因無法分割該值。我已經嘗試了很多方法來做到這一點,但我似乎遇到錯誤,如:SyntaxError:不能分配給運算符和TypeError:不能連接'str'和'int'對象。有沒有人有任何想法,我如何分割一個Python字符串,然後使用該字符串作爲睡眠值?在python中劃分字符串2.7

我是相當新的編程(我13)

from ConfigParser import SafeConfigParser 
config = SafeConfigParser() 

config.read('/home/pi/config.conf') #read config file 
openTime = config.get('blinds', 'open time(secs)') # -> "openTime" 
print 'Overall open time ' + openTime + ' seconds' 

## code to divide openTime by 5 and print the value 

print 'gradual open time' + DividedOpenTime + ' seconds' 

## code to repeat in a loop 5 times with a sleep of the value of 
## DividedOpenTime  

編輯1

嗨,我再次做了什麼我被告知要添加到代碼,它解決了問題的分工和睡眠時間,但由於某些原因,我無法打印值。第11行和第15行都有以下錯誤:

Traceback (most recent call last): 
    File "test.py", line 11, in <module> 
    print 'gradual open time' + divOpenTime + ' this will repeat 5 times' 
TypeError: cannot concatenate 'str' and 'float' objects 

有誰知道我該如何解決此問題?

from ConfigParser import SafeConfigParser 
config = SafeConfigParser() 
import time 

config.read('/home/pi/config.conf') #read config file 
openTime = config.get('blinds', 'open time(secs)') # -> "openTime" 
print 'Overall open time ' + openTime + ' seconds' 

divOpenTime = float(openTime)/5 #working (: 
loop = 0 
print 'gradual open time' + divOpenTime + ' this will repeat 5 times' 

for x in range(0, 5): 
    loop += 1 
    print 'gradual opening stage ' + loop + '/5' 
    #GPIO true- I know how to do this 
    time.sleep(divOpenTime) #working (: 
    #GPIO False- I know how to do this 
    time.sleep(15) #time between each interval fixed value 

感謝埃德

+0

錯誤是我們的最重要的部分幫助您

str(Your_float_value_here) 

再次感謝:你做這個 用。請在這裏發佈錯誤。並感謝你開始在一個年齡時,我們大多數懶惰袋只是玩電子遊戲:) – Ray

+0

謝謝,希望增加更多的東西,如中繼板和東西到我的家庭自動化項目,一旦我有了這個排序我'下次將添加錯誤@ Ray –

回答

2

您需要將字符串轉換爲數字做計算它,

DividedOpenTime = float(openTime)/5 
+0

已在我的代碼中工作,但由於某種原因無法打印值查看我的編輯在我的問題。感謝您的幫助,因爲它解決了主要問題 –

0

我的工作了

print 'Gradual open time ' + str(divOpenTime) + ' seconds this will repeat 5 
times' 

你必須添加/將你的浮點值轉換成一個字符串,以便打印。所有的幫助埃德

+0

或者使用格式化,「%8.4f」%divOpenTime'也會將float轉換爲一個長度和小數位數的字符串(這是舊式,字符串格式化框架也是現代化版本)。 – LutzL