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