2016-04-21 51 views
1

這是我的程序來計算GTIN-8數字的第八位數字。追加數字到分割列表

目標是創建一個列表,用戶可以輸入7位數字,將列表拆分成單獨的值,將數字1,3,5,7乘以3並將其添加到其餘列表中。

origSevList = [] 

    def enterDig(): 
     global origSev 
     origSev = input("Please enter your seven digit number for your GTIN-8 code ") 
     origSevList.append(origSev) 
     return origSevList 

    def splitList(origSevList): 
     global item 
     for item in origSevList: 
      item.split(',') 
      origSevList = [item[0], item[1], item[2], item[3], item[4], item[5], item[6]] 
     print (("Inputted seven digits number split in a list"), origSevList) 

    def xThree(origSevList): 
     global xByThree 
     xByThree = int(item[0])*3 + int(item[2])*3 + int(item[4])*3 + int(item[6])*3 

    def xOne(origSevList): 
     global xByOne 
     xByOne = int(item[1]) + int(item[3]) + int(item[5]) 

    def addOneThree(origSevList): 
     global addSev 
     addSev = xByThree + xByOne 
     print (("The sum of your seven digits mulitplied alternately by 1 and 3 ="), addSev) 

下一步是找到第8位

def eighthDigit(origSevList): 
     global eighth 
     roundNum = ((addSev + 9) // 10*10) 
     eighth = roundNum - addSev 
     print (("Your eighth digit is"), roundNum - addSev) 
     print ((addSev + 9) // 10*10) 

    enterDig() 
    splitList(origSevList) 
    xThree(origSevList) 
    xOne(origSevList) 
    addOneThree(origSevList) 
    eighthDigit(origSevList) 

現在我需要做的就是追加第8位到列表中,並打印得到充分GTIN8數。任何想法如何做到這一點?我是一個初學者,請原諒我的亂碼

+0

'final_number = int(origSev)* 10 + int(第八)'。不是嗎? – EbraHim

+0

@EbraHim對不起,我不知道如何把它放在我的代碼中,我會在哪裏放置它?輸入7位數字和分割後的列表如下所示:['1','2','3','4','5','6','8']。我需要它看起來像這樣[1,2,3,4,5,6,8,7] –

回答

0

我想這是你希望這樣的事情:

def func(): 
    sum = 0 
    number = raw_input("7digit? ") 
    for i in range(len(number)): 
     if i%2 ==0: 
      sum += int(number[i]) * 3 
     else: 
      sum += int(number[i]) 
    GTIN8 = int(round(sum, -1)- sum) % 10 
    return number+ str(GTIN8) 

out = func() 
print out 

作如下處理:

>>> ================================ RESTART ================================ 
>>> 
7digit? 1234567 
12345670 

一般:

如果要爲字符串添加字母:只需使用+字符:

>>> a = "1" 
>>> b = "12345" 
>>> a + b 
'112345' 
>>> 

如果你想一個數字在左側添加了一些:

>>> b = 12345 
>>> c = b*10 + a 
>>> c 
123451 
>>> 

如果你想要一個元素添加到列表中:

>>> a = 1 
>>> b = [1,2,3] 
>>> b.append(a) 
>>> b 
[1, 2, 3, 1] 
>>> 
>>> 
>>> a = "1" 
>>> b = ["1", "2", "3"] 
>>> b.append(a) 
>>> b 
['1', '2', '3', '1'] 
>>> 
+0

你發佈的看起來像我正在考慮的方法。無論如何,你可以告訴我如何將我的代碼中的第八位數字追加到origSevList中? –

+0

@PeteApollo我剛剛在我的回答中向你展示了同樣的東西,兄弟! – EbraHim

+0

高清appendEighth(origSevList): origSevList.append(第八) 回報origSevList 打印(origSevList) –

0

由易卜拉欣回答可能成爲你的目的。我有一些額外的反饋使代碼更健壯。

放入try和catch塊所有的int類型的轉換,因此,如果用戶沒有輸入數字0-9,代碼將能夠妥善處理,並給予錯誤信息(正常退出,而不是拋出異常)。此外,您可以使用len()函數檢查用戶是否輸入了7位數字,因此如果用戶輸入的字符多於或少於7個字符,您可以立即給出錯誤信息。

另外,爲什麼你要添加origSev到origSevList?您將在origSev中獲得7位數字的號碼。您可以通過origSev [i]訪問個人數字,將其轉換爲int並按需處理。

謝謝!

+0

莫非你。請解釋我將如何去使用EbraHim的方法?我需要列表看起來像這樣['1','2','3','4','5','6','8','7'] –