在一行中添加每个数字的单词

时间:2014-10-20 03:21:56

标签: python

我使用输入字创建了var,然后word的输出是十六进制编码,但我需要的是如果输入为10则输出另一个var,输出= 1,2,3,4,5,6 ,7,8,9,10,然后我需要加入每个数字的单词..所以输出将是,hexedWord1,hexedWord2,hexedWord3 ...等..这里是我的代码

   num = raw_input("Inset the number of students. ")
   for num in range(1, num + 1)
        print num
        word = raw_input("Insert the name of student to encrypt it to hex. ")
        res = "0x" + word.encode('hex') + num

    print res

2 个答案:

答案 0 :(得分:0)

首先, 当您使用raw_input读取用户的输入时,该值存储在" num"作为字符串, 因此range(1,num + 1)会抛出错误。

所以要么使用

num = input("Inset the number of students. ")

num = int(raw_input("Inset the number of students. "))

其次,

结尾处缺少冒号(:)

像这样解决:

for num in range(1, num + 1):

第三,你正在使用相同的变量" res"用于存储每个阶段的结果,因此它被覆盖。 我更喜欢使用列表来存储值

在for循环之前声明一个空列表,并在循环

中向其添加新结果

最后,此语句抛出错误

res = "0x" + word.encode('hex') + num

修复:

res = "0x" + word.encode('hex') + str(num)

发生了什么事,你尝试使用" +"连接3个不同类型的对象。它在Python中生成TypeError

最终代码将是这样的:

num = input("Inset the number of students. ")
res = []
for num in range(1, num + 1):
    print num
    word = raw_input("Insert the name of student to encrypt it to hex. ")
    res.append("0x" + word.encode('hex') + str(num))

for r in res:
    print r

这应该有用(假设这是你所期望的)

答案 1 :(得分:0)

要告诉你的问题有点难,但据我所知,你加密的学生名字用逗号分隔,名字跟着他们的名字

您的代码存在一些错误。例如,raw_input("Inset the number of students. ")返回一个字符串,但你像整数一样使用它。要解决这个问题,请执行num = int(raw_input("Inset the number of students. "))还有一些事情可以阻止用户给你一些奇怪的东西,但这样做会有效。

另一个问题是res。对于每个学生,res正在重置。您希望将信息添加到其中。这可以通过+ =运算符轻松完成,但是如果你想用逗号分隔它们,我能想到的最好的事情就是使用一个可以随后用逗号join编写的数组。

总之,代码看起来像这样:

num = int(raw_input("Inset the number of students. "))
res = []
for num in range(1, num + 1):
    print num
    word = raw_input("Insert the name of student to encrypt it to hex. ")
    res.append("0x" + word.encode('hex') + str(num))

print ",".join(res)

就个人而言,使用num作为for循环的迭代器以及num感觉很奇怪,但我会让你保留它。