2016-10-21 2 views
-1

"::: ||"의 5 개의 다른 문자열을 만들어 우편 번호를 5 번 반복하려고 시도했습니다. 소지품. 현재 | 없음 6 | 어떤 것도 5 가지 진술 ("::: ||")의 아이디어라고 생각하지 않습니까?내 문자열 대신 아무 것도 반환하지 않음

zipcode=input("What is your 5 digit zipcode?") #gives the zipcode 
#x,z,c,d,e=zipcode.split() #splits the zipcode into 5 sections IGNORE 

def correctiondigit(zipcode):  #LAST BLOCK OF 6 BLOCK BARCODE 
    zipcode.split() 
    total=  int(zipcode[0])+int(zipcode[1])+int(zipcode[2])+int(zipcode[3])+int(zipcode[4]) 
    if total % 10!=0: 
     total=10-total%10 
    return total 

#return(correctiondigit(zipcode))   IGNORE 

def barcode(a): 
    if a==0: 
     return("||:::") 
    elif a==1: 
     return(":::||") 
    elif a==2: 
     return("::|:|") 
    elif a==3: 
     return("::||:") 
    elif a==4: 
     return(":|::|") 
    elif a==5: 
     return(":|:|:") 
    elif a==6: 
     return(":||::") 
    elif a==7: 
     return("|:::|") 
    elif a==8: 
     return("|::|:") 
    elif a==9: 
     return("|:|::") 


def makebar(x): 
    zipcode.split() 
    for i in zipcode: 
     barcode(x) 

print("|",makebar(zipcode),correctiondigit(zipcode),"|") #prints barcode in not barcode form... 
+0

작성된이 코드도 작동하지 않아야합니다. 'zipcode.split()'는 아마도 당신이 생각하는대로하지 않을 것입니다. ''12345 '와 같은 문자열에'.split' 메서드를 사용하면'[ "12345"]와 같은 단일 항목의 목록이됩니다. 그리고 반복을 시도하면 하나의 항목 만 반복합니다 , 문자열의 문자가 아닙니다. 바코드가 통과하는 이유는 무엇이든 지나치지 않기 때문입니다. – sytech

+0

죄송합니다. 저는 정말 파이썬에 새로운 것이 었습니다. 클래스를 설명하는 동안 병이 났지만 그런 식으로 일한다고 들었습니다. 어떻게하면 입력 된 5 자리를 나누어서 각 숫자를 가져 와서 내 함수를 통해 최종 5 개의 바코드 조합을 인쇄 할 수 있습니까? –

답변

1

코드에 몇 가지 오류가 있습니다. 내가 처음 보았던 곳은 makebar이고, 결과는 어디에도 저장하지 않는 zipcode.split()입니다. 따라서 for i in zipcode:은 각 "단어"가 아닌 우편 번호의 각 문자를 반복합니다. 우편 번호에는 단어가 없습니다. 공백이없는 문자열 일 뿐이므로 split()은 아무 것도 수행하지 않습니다. 둘째로, 반복 된 값을 사용하지 않고 zipcode을 반복하고, 매번 루프를 통해 전달 된 전체 x (글로벌 변수 zipcode에 대한 참조)을 보냅니다. 다음으로, 이러한 barcode 호출의 결과를 누적 할 방법이 없습니다. 마지막으로 makebar에는 return 문이 없으므로 암시 적으로 None을 반환합니다.

def makebar(x): 
    return ''.join(map(barcode, x)) 

그리고 이것은 makebar에만 있습니다. 코드에 추적 또는 기타 원하지 않는 결과를 생성하는 추가 오류가있을 수 있습니다. 코드를 매우 조심스럽게 살펴보고 작업 한 학습 자료를 검토해야합니다. 당신의 FUNC 정의에서 모든

+0

우편 번호는 사용자가 입력 한 5 자리이며 입력 할 "우편 번호"(55555)가 있어야합니다. 기능 5 번 ... –

0
  1. 첫째 :
    def makebar(x): zipcode.split() for i in zipcode: barcode(x)

    zipcode.split()는 단지 우편 번호 자체를 변경하지 않은, 목록을 반환합니다.
    for i in zip code: 각각은 내가 원하는 int가 아닌 str (단일 char)입니다. 당신은 STR을 통과, 그래서 당신이 설정 한 조건에 맞지 않을 수 beacause를 def barcode(a):
    에서

  2. .
    결국 아무 것도 없음 (자동으로 값을 반환 함).

  3. 난 당신이
+0

그래서 나는 내가 우편환으로 바꿀 필요가 있습니까? –

+0

나는 나의 대답을 바꾸었다. 그리고 당신은 일련의 코드를 얻고 싶다고 생각했습니다. || ::: | : | :: || : : | :: | : | : | : 6 | . 반환 값 및 args 유형과 같은 세부적인 것에 초점을 맞추어야합니다. – Pham

0

는 희망이 당신이 달성하려고하는 무엇에 가까운 (차리는 * 표기를) print("|",*makebar(zipcode),correctiondigit(zipcode),"|")yield barcode(int(i)) 마지막 문에 barcode(x)을 변경하는 것이 좋습니다.
나는 당신의 수표 계산의 성질에 대해 확신 할 수 없지만 그것이 틀렸다는 것을 말하는 방법이 있어야한다고 가정하고, 나는 "X"를 사용했다.

zipcode=input("What is your 5 digit zipcode?") #gives the zipcode 
try: 
    num = int(zipcode) 
except: 
    print("Invalid Zipcode - requires numeric input only") #Test for numeric input 
    quit() 
if len(zipcode) != 5:          # test input length 
    print("Invalid Zipcode - requires 5 numerics") 
    quit() 

def correctiondigit(zipcode):  #LAST BLOCK OF 6 BLOCK BARCODE 
    total = sum(int(i) for i in zipcode)     #Calculate total 
    if total % 10!=0: 
     total=10-total%10 
    else: 
     total = "X"           #Check digit incorrect 
    return total 

def barcode(a): 
    if a==0: 
     return("||:::") 
    elif a==1: 
     return(":::||") 
    elif a==2: 
     return("::|:|") 
    elif a==3: 
     return("::||:") 
    elif a==4: 
     return(":|::|") 
    elif a==5: 
     return(":|:|:") 
    elif a==6: 
     return(":||::") 
    elif a==7: 
     return("|:::|") 
    elif a==8: 
     return("|::|:") 
    elif a==9: 
     return("|:|::") 


def makebar(x):            #Build barcode representation 
    bar=[]             #Using a list 
    for i in zipcode: 
     bar.append(barcode(int(i))) 
    return bar 

print("|",makebar(zipcode),correctiondigit(zipcode),"|") 

출력 :

What is your 5 digit zipcode?12345 
| [':::||', '::|:|', '::||:', ':|::|', ':|:|:'] 5 | 
What is your 5 digit zipcode?13131 
| [':::||', '::||:', ':::||', '::||:', ':::||'] 1 | 
What is your 5 digit zipcode?22222 
| ['::|:|', '::|:|', '::|:|', '::|:|', '::|:|'] X | 
관련 문제