如何在Python中制作回文计算器

时间:2015-08-11 10:30:31

标签: python palindrome

我目前正处于一个学校项目的中途,该项目要求我创建一个python程序,可以读取两个非负整数,开始和结束,以及打印出所有的回文开始和结束(包括)。我们给出的代码是:

begin = int(input('Enter begin: '))
end = int(input('Enter end: '))

palindromes = 0
# Add your code here. You will want to start with a "for x in range" style loop.

print('There are', palindromes, 'palindrome(s) between', begin, 'and', end)

问题:如何计算输入的两个数字范围内的回文数量(以及哪些数字为回文数据)?

研究:我试过看一下页面,这个是一个很好的,虽然我(对python来说是新手)在我把它放入代码时无法理解它: how to check for a palindrome using python logic

5 个答案:

答案 0 :(得分:0)

回文数以相同的方式从右到左和从左到右书写:例如:

123 is not a palindrome number because its inverted representation is 321
121 is a palindrome number because its inverted representation is 121

并且在python中执行此操作的最简单方法是将数字转换为字符串并将其与其反转表示进行比较(假设n是数字,我们想知道它是否为' sa回文与否):

if str(n) == str(n)[::-1]:
    print "It's a palindrome number"

所以问题的解决方案是迭代中的if brunch,如下所示:

print "Enter begin:"
begin = int(raw_input("> "))
print "Enter end:"
end = int(raw_input("> "))

palindromes = 0

for x in range(begin, end):
    if str(x) == str(x)[::-1]:
        palindromes += 1

print "There are %d palindrome(s) between %d and %d" % (palindromes, begin, end)

答案 1 :(得分:0)

由于这是学校的工作,我没有看到为你编写代码的巨大好处,但这里有如何解决问题。

正如您的示例中的评论所说,您将要开始使用for x in range循环。在这种情况下,我建议您使用range()的版本,它同时包含起点和终止点(开始和结束) - 请注意,这将在开始和停止之间迭代数字包括开始但不停止。

示例 - 在各自的行上打印数字1到9:

for x in range(1, 10):
   print(x)

在for循环中,您可以测试x是否是回文。如果是,您想要将其添加到找到的回文列表中。稍后,您可以将palindromes变量设置为此列表的length,并根据需要打印出内容。

要了解x是否是回文,您找到的答案应该有所帮助。或者你可以考虑回文是什么,并且可以自己编写方法。你在开始之前想要convert x to a string,然后它只是比较字符串的前半部分和后半部分的情况,并且有一些有趣的方法可以做到这一点:)< / p>

您可以尝试以下两个选项:

1)使用切片将字符串分成两半(如果有奇数个字符,则忽略中间字符)。 Reverse字符串的一半,然后将其与另一半进行比较;如果它们是相同的那么它就是一个回文。

2)使用另一个for循环,start为0,stop为长度的一半(向下舍入到最接近的整数)。在循环内部,取字符串两端的 slices 并比较它们。

示例(其中x是循环计数器,当前值为0)。

  
    
      

string =&#39; abcd&#39;       串[0 + X]       &#39;一个&#39;       串[ - (1 + x)]的       &#39; d&#39;

    
  

对于这两个答案,如果您还不熟悉,请查看如何对字符串进行切片。这里有一些有用的示例in this Python introduction

答案 2 :(得分:0)

回文是反转写入的数字与原始数字相同的数字。例如,1234321是回文。

因此,要检查这一点,您所要做的就是检查数字的反面是否与原始相同。

这是代码。

begin = int(input('Enter begin:'))
end = int(input('Enter end:'))

palindromes = 0

for i in range(begin, end+1, 1):
    if str(i) == str(i)[::-1]:  #Here I convert the int to string and check if t matches the reverse
       palindromes += 1
       print i
print "Total number of palindromes = ",palindromes

答案 3 :(得分:0)

谢谢大家,我发现答案的代码是:

begin = int(input('Enter begin: '))
end = int(input('Enter end: '))

palindromes = palindromes = len([i for i in range(begin, end+1) if str(i) ==     str(i)[::-1]])
  for i in range(begin, end+1):
    if str(i) == str(i)[::-1]:
      print(i,'is a palindrome')

print('There are', palindromes, 'palindrome(s) between', begin, 'and', end)

答案 4 :(得分:0)

# Palindrome Number Calculator

Palindrome = False
Test = 0
newInt = 0

myInt = int(input("Enter a number "))
myIntReversed = int(str(myInt)[::-1])

if myInt == myIntReversed:
    print("Your number is a palindrome")
    Palindrome = True
    exit()

while Palindrome == False:

    myInt += myIntReversed

    Test += 1

    myIntReversed = int(str(myInt)[::-1])

    if myInt == myIntReversed:
        print("Palindrome")
        print(myInt)
        Palindrome = True

exit()

如果使用pycharm,则可以使用调试功能查看计算机所处的测试编号。我不打印这个号码,所以程序运行得更快。试着看你的程序是否可以看到196的回文是什么:)