2013-05-02 2 views
0

시험 문제의 경우 기본적으로 ceasar cipher와 동일한 원칙을 사용하여 숫자 시퀀스를 암호화하는 프로그램을 만드는이 특정 의사 코드를 따랐습니다. 그것은 작동해야하지만 어떤 이유로 오류를 반환합니다. Heres는 파이썬 암호화

TypeError: 'int' object is not iterable 

코드

, 내가 많은 감사, 너희들이 나를 도울 수 있기를 바랍니다

plainNum = input("enter a number to encode ") 
codedNum = ' ' 
Key = input("enter a key ") 

for i in plainNum: 
    codedNum = codedNum + str((int(i)+key)%10) 
    print codedNum 

답변

5

사용 raw_input 당신이 문자열을 기대한다면 :

plainNum = raw_input("enter a number to encode ") 

input()는 것처럼 입력 해석을 파이썬 코드입니다. 5을 입력하면 정수가 반환되며 'some text' (따옴표 포함)을 입력하면 문자열이 반환됩니다. 반면에 raw_input()은 입력 된 입력을 해석되지 않은 것으로 반환합니다. 모든

+0

Im하지만 :) 사용자가 숫자를 입력하길 원하거나 중요하지 않습니까? 둘 다 raw_input으로 변경해야합니까? 감사합니다 – user1655562

+2

@ user1655562 : 숫자를 일련의 숫자로 해석합니다. 그 문자열은 파이썬 정수 값이 아닌 * 문자열입니다. –

+0

@ user1655562 : 당신의 키가 다른 한편으로는 당신은 정수로 사용하고 있습니다. 그래서'input()'은 * some sense를 만들지 만'int (raw_input ('.. ..)를 사용하여 정수를 받아 들일 수 있습니다. '))'. –

2

대부분의 더러운 수정, 단순히 선언 어떤 변수를 반영하기 위해

for i in str(plainNum): 
0

키에 당신이 아마 또한 싶어 변경 키로

for i in plainNum: 

을 변경하고도 '에 code_num으로는 처음과 동일하게 '대신'(공백 대 공백 없음) 그냥 책을 지키는 것

1

10 진수를 사용하면 작동하지만 작동하지 않습니다. 단어 나 공백을 입력하면 행동하지 않습니다. 같은과 공백을 제거 후

try: 
    float(element) 
except ValueError: 
    print "Not a float" 

: 항목이 같은 뭔가 수 있음을 처음으로 확인 고려

plainNum = plainNum.strip() 

는하지만 이것은 당신의 입력 정수의 인코딩 된 숫자 출력 :

plainNum = raw_input("enter a number to encode ") 
codedNum = ' ' 
key = input("enter a key ") 

for i in plainNum: 
    codedNum = codedNum + str((int(i)+key)%10) 
    print codedNum 

raw_input을 사용하여 번호를 묻습니다.

for char in plainNum: 

예,이 문자열에서 지금 문자이며, 그래서 당신은 INT (I) 함수를 사용했습니다 :이 입력 당신이 반복 할 수있는 문자열을 만든다.

+0

데이터 검증을 사용 하겠지만 이것은 시험지의 특정 목적을위한 것이며이 질문은 가상 코드를 직접 언어로 변환해야 할 때입니다. 우리가 그것을 바꿀 수 없거나 최적화 할 수 없다는 것은 현명한 시험에서 점수를 잃는 현명한 시험입니다. 이것은 바로 순간에 연습입니다. – user1655562

+0

예, 위에 게시 한 작업 예제에서도 Key to key를 변경해야했습니다. 그리고 나는 plain Num for을 바꿀 것이다. not in plain in charNum : 스타일 포인트. – Gopher

+0

오우 예 저는 지금 무슨 뜻인지 이해합니다. – user1655562

관련 문제