Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 反转整数并查找它是否为';这是一条回文巨蟒_Python 3.x - Fatal编程技术网

Python 3.x 反转整数并查找它是否为';这是一条回文巨蟒

Python 3.x 反转整数并查找它是否为';这是一条回文巨蟒,python-3.x,Python 3.x,我正试图写一个程序,找出是否是回文。我有这个代码,但我一辈子都不明白为什么它不起作用。它运行,但只返回该数字不是回文,而不管它是否是回文 def reverse(number): reverse = 0 while number > 0: endDigit = number % 10 reverse = (reverse*10) + endDigit number = number // 10 def isPalin

我正试图写一个程序,找出是否是回文。我有这个代码,但我一辈子都不明白为什么它不起作用。它运行,但只返回该数字不是回文,而不管它是否是回文

def reverse(number):
    reverse = 0    
    while number > 0:
        endDigit = number % 10
        reverse = (reverse*10) + endDigit
        number = number // 10

def isPalindrome(number):
    reverse(number)
    original = number    
    if original == reverse:
        print("yep, it's a Palindrome")
    else:
        print("sorry man, not a Palindrome...")

def main():
    number = eval(input("Please enter a number and I'll check if it's a Palindrome: "))
    isPalindrome(number)
main()

或者,您是否考虑过将整数表示为字符串,并将其与其反向形式进行比较

In [1]: num1 = 907709

In [2]: num2 = 90789

In [3]: str(num1) == str(num1)[::-1]
Out[3]: True

In [4]: str(num2) == str(num2)[::-1]
Out[4]: False
寻址当前代码:您需要从
reverse()
返回一些内容,并在
isAlindrome()
中为返回的值分配一些内容

也就是说,
reverse()
在这里仍然会失败。考虑:

In [28]: reverse(10750)
Out[28]: 5701

如果你不认为这是有效的,你应该使用整数的字符串形式(<代码> STR(数字)< /代码>),它将在反转数字时保留尾随零点。使用

[::-1]
是一种索引形式来反转字符串。

或者,您是否考虑过将整数表示为字符串并将其与其反转形式进行比较

In [1]: num1 = 907709

In [2]: num2 = 90789

In [3]: str(num1) == str(num1)[::-1]
Out[3]: True

In [4]: str(num2) == str(num2)[::-1]
Out[4]: False
寻址当前代码:您需要从
reverse()
返回一些内容,并在
isAlindrome()
中为返回的值分配一些内容

也就是说,
reverse()
在这里仍然会失败。考虑:

In [28]: reverse(10750)
Out[28]: 5701

如果你不认为这是有效的,你应该使用整数的字符串形式(<代码> STR(数字)< /代码>),它将在反转数字时保留尾随零点。使用

[::-1]
是一种索引形式,用于反转字符串。

切勿使用
eval
。 首先,让我解释一下你的错误。你对这个项目的期望是错误的。您可能希望
reverse(number)
将数字本身反转。例如,
reverse(123)
之后,
123
应该变成
321
。但是,等等,
123
只是一个数字,就像数学中的数字一样,你知道的。你真的想把
123
变成
321
?你能预测那之后会发生什么吗?您现在将支付租金
321
,而不是
123
,因为您已经更改了号码本身!不过,这些实际上是好消息,因为我的银行账户上正好有123美元,这可能是增加我的钱的最简单的方法

这只是个玩笑。但关键是:不能更改传递给函数的数字。这样做是出于安全原因。python中有可变和不可变的对象。数字是不变的。您不能更改号码,只能分配另一个号码:

a = 123
a = 312 # 123 is still 123, 321 is still 312, but a is 321 now
列表是可变对象,例如:

a = []
a.append(1) # I can change the list itself, whoa!
a.append(2) # one more time
a = [3] # and even assign a new list
最后,要点是:不能将传递的数字更改为函数但是:您可以返回一个新号码!这就是问题所在-只需从
reverse
函数返回一个结果,并将其分配到如下位置:

def reverse(number):
    ...
    return result

r = reverse(123)
reverse
不会改变
123
,它不会打破世界,它只返回一个新的数字,一切正常

顺便说一下,有一种更简单的方法来检查回文:

In [5]: def is_palindrome(s):
   ...:     return s == s[::-1]
   ...: 

In [6]: n = input('Enter number: ')
Enter number: 123321

In [7]: if is_palindrome(n):
   ...:     print('You cool')
   ...: else:
   ...:     print('No luck')
   ...:     
You cool
s[::-1]
的意思是`从开始到结束,以相反的顺序取每个符号。这是一个

切勿使用
eval
。 首先,让我解释一下你的错误。你对这个项目的期望是错误的。您可能希望
reverse(number)
将数字本身反转。例如,
reverse(123)
之后,
123
应该变成
321
。但是,等等,
123
只是一个数字,就像数学中的数字一样,你知道的。你真的想把
123
变成
321
?你能预测那之后会发生什么吗?您现在将支付租金
321
,而不是
123
,因为您已经更改了号码本身!不过,这些实际上是好消息,因为我的银行账户上正好有123美元,这可能是增加我的钱的最简单的方法

这只是个玩笑。但关键是:不能更改传递给函数的数字。这样做是出于安全原因。python中有可变和不可变的对象。数字是不变的。您不能更改号码,只能分配另一个号码:

a = 123
a = 312 # 123 is still 123, 321 is still 312, but a is 321 now
列表是可变对象,例如:

a = []
a.append(1) # I can change the list itself, whoa!
a.append(2) # one more time
a = [3] # and even assign a new list
最后,要点是:不能将传递的数字更改为函数但是:您可以返回一个新号码!这就是问题所在-只需从
reverse
函数返回一个结果,并将其分配到如下位置:

def reverse(number):
    ...
    return result

r = reverse(123)
reverse
不会改变
123
,它不会打破世界,它只返回一个新的数字,一切正常

顺便说一下,有一种更简单的方法来检查回文:

In [5]: def is_palindrome(s):
   ...:     return s == s[::-1]
   ...: 

In [6]: n = input('Enter number: ')
Enter number: 123321

In [7]: if is_palindrome(n):
   ...:     print('You cool')
   ...: else:
   ...:     print('No luck')
   ...:     
You cool

s[::-1]
的意思是`从开始到结束,以相反的顺序取每个符号。这是一个

您的
reverse()
函数计算局部变量中的反转数,该值不会返回或在函数外部可用。调用这个函数没有任何意义。那么我该如何使reverse()函数在isAlindrome()函数中可用呢?而且我刚刚意识到你是对的,在main()函数hahayor
reverse()中调用我的reverse()函数是完全没有意义的
函数计算局部变量中的倒数,该值不会返回或在函数外部可用。调用这个函数没有任何意义。那么我该如何使reverse()函数在isAlindrome()函数中可用呢?而且我刚刚意识到你是对的,在main()中调用我的reverse()函数是完全没有意义的函数hahaIs有没有一种方法可以对我的代码进行某种编辑,并使其达到预期目的?这只是一种使我的reverse()函数可以在isAlindrome()函数中使用的方法好吧,我明白了,所以完全有必要将其更改为