我有这段代码:
def rndint(self, s=0, l=10):
num = pow(self._seed, 2)
strnum = str(num)
if len(strnum) < 3:
strnum + "37"
mid = int(strnum[1:len(strnum)-1]) % l+1
self._seed = mid
return mid
问题是,当我用:
运行它时rnd = Random(100)
rnd.rndint()
它给出了:
Traceback (most recent call last):
File "C:\Anaconda2\lib\site-packages\IPython\core\interactiveshell.py", line 3066, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-29-0d460ce98561>", line 1, in <module>
rnd.rndint()
File "C:\Users\Anshul\PycharmProjects\AMath\amath\random\randomGen.py", line 16, in rndint
mid = int(strnum[1:len(strnum)-1]) % l+1
TypeError: not all arguments converted during string formatting
我的代码出了什么问题?
答案 0 :(得分:0)
我认为当你打算实际使用模数运算符时,python认为你正在尝试进行字符串替换。也许尝试使用l + 1
周围的括号%(l+1)
?不确定这是否有效,但这是解决你的错误的唯一方法。
另外,我认为你的意思是让它上面的一行说:
if len(strnum) < 3:
strnum += "37"
这也可能导致错误。否则它上面的一行什么都不做。
此外,这可能有所帮助:
mid = int(strnum[1:-1])%(l+1)
让我知道是否有效。