我知道在这个主题上有很多类似的问题。但我仍有一些疑问需要明确。
def int_to_roman(input):
if type(input) != type(1):
raise TypeError, "expected integer, got %s" % type(input)
if not 0 < input < 4000:
raise ValueError, "Argument must be between 1 and 3999"
ints = (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1)
nums = ('M', 'CM', 'D', 'CD','C', 'XC','L','XL','X','IX','V','IV','I')
result = ""
for i in range(len(ints)):
count = int(input / ints[i])
result += nums[i] * count
input -= ints[i] * count
return result
我真的不明白下面的代码:
for i in range(len(ints)):
count = int(input / ints[i])
result += nums[i] * count
input -= ints[i] * count
的作用:
for i in range (len(ints)):
它意味着&#39; 1000&#39; 900&#39;&#39; 800&#39; (分别为整数)或者它是指13(整数为13的整数)?
count = int(input / ints[i])
ints [i]是什么意思?
有人请解释这些代码吗?最好是你可以展示一些例子(比如代替数字并展示它是如何运作的)
答案 0 :(得分:1)
两个列表的名称很糟糕(ints
和nums
)。
但是,从最高罗马数字(nums[0]
=&#39; M&#39;)开始,循环找出该数字(ints[0]
= 1000)的值除以多少次输入值,并将数字多次附加到结果字符串。
然后它从输入中减去刚添加到结果(ints[0] * count
)的字符串的值,然后移到下一个罗马数字(nums[1]
)以使用该余数重复该过程。
答案 1 :(得分:1)
两个列表ints
和nums
的长度相同。循环遍历ints
的长度,这意味着变量i
可以访问任一列表的相同位置,彼此匹配。
如果我们逐步完成循环,count
将被赋予输入的整数值除以ints
中的第一个数字,即1000.如果input
变量是,则说,10,然后10/1000将得到一个数字<1,并且在结果上使用int()
将导致它将0分配给count
。当0乘以nums
的匹配字符串时,分配的结果基本上没有。然后从input
中减去相同的金额,在这种情况下保持不变。
最终,当分割结果为数字> = 1时,循环将达到一个点,因此以下步骤将执行某些操作。
假设int(input / ints[i])
的结果为3 "X" * 3
会产生"XXX"
,会将result
添加到input
,for f in *.mp4 *.m4v; do ran=$(printf "%03.0f" $((RANDOM%300))); myFile="${f}"; mv -f "${myFile}" "${ran}-${myFile}"; mv -f "${myFile%.*}.srt" "${ran}-${myFile%.*}.srt"; done
会减少def addVectors(vector1, vector2):
angle1, length1 = vector1
angle2, length2 = vector2
x = math.sin(angle1) * length1 + math.sin(angle2) * length2
y = math.cos(angle1) * length1 + math.cos(angle2) * length2
length = math.hypot(x, y)
angle = 0.5 * math.pi - math.atan2(y, x)
return (angle, length)
适当的数量,在这种情况下为30.所以,直到循环结束。
答案 2 :(得分:0)
def romanize(number):
n2rMap = {1000:'M', 900:'CM', 500:'D', 400:'CD', 100:'C', 90:'XC', 50:'L', 40:'XL', 10:'X', 9:'IX', 5:'V', 4:'IV', 1:'I'}
roman = ""
for key in n2rMap.keys():
count = int(number / key)
roman += n2rMap[key] * count
number -= key * count
return roman