0

因此,对于考试问题,我遵循了这个特定的伪代码,它基本上制作了一个使用与凯撒密码相同的原理加密数字序列的程序。它应该可以工作,但由于某种原因它会返回错误。

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
4

4 回答 4

5

raw_input如果您期望一个字符串,请使用:

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

input()将输入解释为 Python 代码;输入5它会返回一个整数,输入'some text'(带引号)它会返回一个字符串。raw_input()另一方面,返回未解释的输入输入。

于 2013-05-02T20:46:30.860 回答
2

最肮脏的修复,只需更改

for i in plainNum:

for i in str(plainNum):
于 2013-05-02T20:48:08.730 回答
1

这是有效的,但如果我使用小数则无效,并且如果我输入单词或空格,它就不会起作用。考虑首先检查该条目是一个类似于以下内容的数字:

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) 函数。

于 2013-05-02T20:56:15.917 回答
0

您可能还想将 key 更改为 Key 以反映声明的变量,并使 codeNum 最初等于 '' 而不是 ' ' (没有空格与空格)只是记账

于 2013-05-02T20:54:59.673 回答