0

我有一个字符串:

i = '12345678901'

如何检查(使用python)字符串中最后一个数字之前的一个是偶数还是奇数?

在上面的字符串中,我希望函数返回或打印“偶数”。
我找到了一些示例,但它们是用 C 语言编写的,我不知道如何在 Python 中使用它

4

7 回答 7

3

有(至少)两种方法可以做到这一点:

方法一:

获取索引 -2 处的字符并对其进行 intify 并用 2 检查其模数

In [119]: i = '12345678901'

In [120]: int(i[-2])%2
Out[120]: 0

In [121]: int(i[-1])%2
Out[121]: 1

方法二:

intify i,然后除以 10 和 mod 除以 10 得到倒数第二个数字并点头 2 确定它是偶数还是奇数

In [122]: i = 12345678901

In [123]: (i/10)%10
Out[123]: 0

In [124]: ((i/10)%10)%2
Out[124]: 0
于 2013-01-13T23:52:53.077 回答
2

单线:

f = lambda s: 'odd' if int(s[-2]) % 2 else 'even'

输入测试:

>>> i = '12345678901'
>>> f(i)
'even'
>>> i = '12345678931'
>>> f(i)
'odd'
于 2013-01-14T00:06:58.313 回答
1

这很容易实现,你只需要一点点切片,模运算符(%)就可以了。

i = '12345678901'

second_last = i[-2]

if int(second_last) % 2 == 0:
    print("Even")
else:
    print("Odd")

输出:

Even
于 2013-01-13T23:53:05.197 回答
0
i = '12345678901'
print int(i[-2]) % 2 == 1
# False

要让它打印偶数或奇数,您需要这样做:

if int(i[-2]) % 2 == 0:
    print 'Even'
else:
    print 'Odd'

您还可以使用由语句1解释为的事实(并且is ):Trueif0False

if int(i[2]) % 2:  #if int(i[-2]) % 2 returns 1
    print 'Odd'
else:
    print 'Even'
于 2013-01-13T23:53:07.960 回答
0

第 1 步:获取倒数第二个数字:

last_digit = i[-2]

第2步:奇怪吗?

is_odd = last_digit in '13579'
于 2013-01-13T23:53:25.320 回答
0

这从获取数据切片开始,请参阅解释 Python 的切片表示法以获得切片的良好解释。官方文档不是那么明显。

您可以使用负数从末尾开始切片。一旦你有了切片,你需要检查它是否是一个数字,找到它的 nmeric 值,看看它是否是偶数。

编码留给读者作为练习。

于 2013-01-13T23:54:01.067 回答
0
(i % 10) & 1

如果奇数返回1,如果偶数返回0

代码 -

print "even" if not ((int(i) / 10) % 10) & 1 else ""
于 2015-09-24T12:14:34.323 回答