检查python中的数字是奇数还是偶数

use*_*350 48 python

我正在尝试制作一个程序,检查一个单词是否是一个回文并且我已经到目前为止它可以使用具有偶数数字的单词.我知道如果字母数量是奇数,如何使它做某事但我只是不知道如何找出一个数字是奇数.有没有简单的方法来查找数字是奇数还是偶数?

仅供参考,这是我的代码:

a = 0

while a == 0:
    print("\n \n" * 100)
    print("Please enter a word to check if it is a palindrome: ")
    word = input("?: ")

    wordLength = int(len(word))
    finalWordLength = int(wordLength / 2)
    firstHalf = word[:finalWordLength]
    secondHalf = word[finalWordLength + 1:]
    secondHalf = secondHalf[::-1]
    print(firstHalf)
    print(secondHalf)

    if firstHalf == secondHalf:
        print("This is a palindrom")
    else:
        print("This is not a palindrom")


    print("Press enter to restart")
    input()
Run Code Online (Sandbox Code Playgroud)

谢谢

Dea*_*hex 128

if num % 2 == 0:
    pass # Even 
else:
    pass # Odd
Run Code Online (Sandbox Code Playgroud)

%标志是象师只是它检查剩余,因此,如果除以数量2有剩余0,它甚至否则奇怪.

  • 0将被视为偶数。由于0/2 = 0余数为0,所以0%2为0 (3认同)

lej*_*lot 46

与其他语言类似,最快的"模2"(奇数/偶数)运算是使用bitwise and运算符完成的:

if x & 1:
   return 'odd'
else:
   return 'even'
Run Code Online (Sandbox Code Playgroud)

  • "显式优于隐式.简单优于复杂.",来自禅宗的Python (17认同)
  • 我认为@MaximeLorant 指的是这样的事实,即按位和操作是一种模糊的方法来做到这一点,尽管禁食。如果您不追求速度,模运算是最清晰的方法。 (7认同)
  • 因为`num%2`比`num&1`更明确?Python没有内置的"odd()"函数,所以除非你自己编写,否则你不会比这更明确,在这种情况下,使用哪种方法来实现它仍然无关紧要. (3认同)
  • 那是对的@Puff.模数运算符以这种用例而着称,而数字上的按位运算符并不常见.另外,两种解决方案似乎都在我的PC上以相同的速度运行(使用`timeit.timeit('a = random.randint(1,1000); a&1',setup ='import random',number = 1000000) ,我得到1.1109为bitwise和1.1267为modulo ...)我仍然赞同我2014年的评论,万岁:-) (2认同)
  • 这很有趣,因为我也尝试使用 timeit 来运行它。我相信,由于 python 将数字包装为对象,因此底层代码可能没有针对 AND 运算进行优化。通过使用汇编,我知道按位与(到目前为止)比模运算(使用除法并获取余数寄存器)更快。这可以用其他语言进行测试。我不同意明确和可读......但也许新手更容易理解。 (2认同)

kyl*_*e.a 9

如果单词的字母数量为偶数或奇数,则无关紧要:

def is_palindrome(word):
    if word == word[::-1]:
        return True
    else:
        return False
Run Code Online (Sandbox Code Playgroud)

  • 为什么不只是`return word == word [:: - 1]`?如果condition为True,则返回True,如果condition为false,则返回False,与return条件相同... (8认同)
  • @Hyperboreus只是想尽可能明确,因为我觉得OP对Python来说是一个新手. (3认同)