Ruby 的 to_s(2) 如何转化为 python?
How does Ruby's to_s(2) translate into python?
所以我一直在尝试将 Ruby 代码片段重写为 Python,但我无法使其工作。我重新阅读了所有内容以确保我做对了,但它仍然不起作用。我想问题出在这个“翻译”上:
def multiply(k, point = $G)
current = point
binary = k.to_s(2)
binary.split("").drop(1).each do |char|
current = double(current)
current = add(current, point) if char == "1"
end
current
end
这是我翻译的 python 版本:
def multiply(k, point = G):
current = point
binary = bin(k)
for i in binary[3:]:
current = double(current)
if i == "1":
current = add(current, point)
return current
我相信我不太理解Ruby的概念 to_s(2) and/or .drop(1)。
谁能告诉我将这个Ruby代码翻译成Python的最好方法是什么?
编辑
所以,我将按照@Michael Butscher 的建议进行详细说明:
我有 this Ruby code, which I tried to translate into this Python 代码。虽然输出应该是
044aeaf55040fa16de37303d13ca1dde85f4ca9baa36e2963a27a1c0c1165fe2b11511a626b232de4ed05b204bd9eccaf1b79f5752e14dd1e847aa2f4db6a5
它抛出一个错误。为什么?
问题不在您显示的函数中,而是在您的 inverse
函数中。 /
between integers in Ruby 翻译为 //
in Python 3:
Ruby:
3 / 2
# => 1
3.0 / 2
# => 1.5
Python 3:
3 / 2
# => 1.5
3 // 2
# => 1
所以我一直在尝试将 Ruby 代码片段重写为 Python,但我无法使其工作。我重新阅读了所有内容以确保我做对了,但它仍然不起作用。我想问题出在这个“翻译”上:
def multiply(k, point = $G)
current = point
binary = k.to_s(2)
binary.split("").drop(1).each do |char|
current = double(current)
current = add(current, point) if char == "1"
end
current
end
这是我翻译的 python 版本:
def multiply(k, point = G):
current = point
binary = bin(k)
for i in binary[3:]:
current = double(current)
if i == "1":
current = add(current, point)
return current
我相信我不太理解Ruby的概念 to_s(2) and/or .drop(1)。 谁能告诉我将这个Ruby代码翻译成Python的最好方法是什么?
编辑 所以,我将按照@Michael Butscher 的建议进行详细说明:
我有 this Ruby code, which I tried to translate into this Python 代码。虽然输出应该是
044aeaf55040fa16de37303d13ca1dde85f4ca9baa36e2963a27a1c0c1165fe2b11511a626b232de4ed05b204bd9eccaf1b79f5752e14dd1e847aa2f4db6a5
它抛出一个错误。为什么?
问题不在您显示的函数中,而是在您的 inverse
函数中。 /
between integers in Ruby 翻译为 //
in Python 3:
Ruby:
3 / 2
# => 1
3.0 / 2
# => 1.5
Python 3:
3 / 2
# => 1.5
3 // 2
# => 1