我正在尝试编写代码以从主密钥中获取两个密钥。密钥必须是字符串。对于第一个,您必须采用偶数,而对于第二个,则应采用赔率。例如:主密钥=18923。第一个密钥= 82,第二个密钥= 193。
我是python的新手。
masterKey = '18293'
firstKey = ''
secondKey = ''
masterKeyList = list(masterKey)
firstKeyList = list(firstKey)
secondKeyList = list(secondKey)
for digit in masterKeyList:
**if digit % 2 == 0:** *<--- here is the error*
firstKeyList.append(digit)
else:
secondKeyList.append(digit)
*if digit % 2 == 0: <--- Error message
TypeError: not all arguments converted during string formatting*
我想知道为什么会这样,以及解决方法。谢谢!
答案 0 :(得分:1)
发生此错误是因为digit
是字符串,而%
在字符串上下文中是格式运算符。
要修复此问题,请将其转换为整数:
...
if int(digit) % 2 == 0:
...
答案 1 :(得分:1)
digit
是代码中的字符串,因此,如果要应用模2,则需要将其转换为数字。应该可以正常工作:
masterKey = '18293'
firstKey = ''
secondKey = ''
masterKeyList = list(masterKey)
firstKeyList = list(firstKey)
secondKeyList = list(secondKey)
for digit in masterKeyList:
if int(digit) % 2 == 0: <--- fixed
firstKeyList.append(digit)
else:
secondKeyList.append(digit)
答案 2 :(得分:1)
digit
是一个字符串。只需使用int()
进行打字:
if not int(digit) % 2:
发生错误的原因是因为模数运算符也是字符串格式运算符,但是您没有为字符串格式'2'提供必要的参数
此for循环将起作用:
for digit in masterKeyList:
if not int(digit) % 2:
firstKeyList.append(digit)
else:
secondKeyList.append(digit)
答案 3 :(得分:1)
如果需要使用unordered_set
,可以使用列表理解和join()
来简化和缩短。如果您更喜欢strings
,则只需删除lists
。您可以执行以下操作:
join()