学习Python 3自我引导。在 C 语言中,我使用整数数组解决了这个问题,并将数组索引与硬编码数字进行比较。我在将其移植到 Python 3 时遇到了一些困难。
问题:给定一个长整数,将前两位数字与另一组数字匹配。
number = 123456789
set1 = [21, 22, 23]
set2 = [11, 12, 19]
Intended Output
>>> Number is of type set2.
or
>>> Number is not in set1 or set2.
我一直试图做的是将前两位数字 (12( 与数字分开,然后与 set1 中的每个值进行比较,然后是 set2。我通过将数字转换为字符串并尝试使用 cmp(( 函数来开始执行此操作。
由于我使用的是python 3,因此cmp((不是一个内置函数,这就是我卡住的地方。我开始寻找实现 cmp(( 的不同方法,然后开始阅读文档和帖子的兔子角色。最后决定只问我的具体问题。
我的非工作,未完成的实现如下。仍然需要通过每个列表中的每个元素实现正确的数字比较。我觉得转换为字符串是不必要的,但我不确定该怎么做。
number = 123456789
set1 = [21, 22, 23]
set2 = [11, 12, 19]
numberString = str(number)
numberType = "".join([numberString[0] + numberString[1])
if(cmp(numberType, set1) == 0):
return 1
elif(cmp(numberType, set2) == 0):
return 2
else:
return 0
在 Python 中切片字符串更容易。 因此,您可以转换为str,取前两位数字,然后转换回int。 然后,您只需in
我们检查它是否在您拥有的列表中即可。
如果需要它作为函数,只需定义它,传入变量,然后返回打印字符串而不是打印。
number = 123456789
set1 = [21, 22, 23]
set2 = [11, 12, 19]
x = int(str(number)[:2])
if x in set1:
print('Number is of type set1.')
elif x in set2:
print('Number is of type set2.')
else:
print('Number is not in set1 or set2')
...
Number is of type set2.