[英]Reverse digits of a list of numbers in python
for i in range(len(primo)):
reversed_num = 0
while i > 0:
digit = i % 10
reversed_num = reversed_num * 10 + digit
i //= 10
reversed.append (reversed_num)
for r in range(len(reversed)):
print (r)
我正在编写一个程序来反转列表中的一系列数字。 例如:
输入:1234,124,654
Output: 4321,421,456
该脚本使用一个数字可以正常工作,但使用一个列表就不能正常工作。
编辑: ......................................
这是整个工作代码。
#program to find the multiple of the first number that summed to its reverse creates a number divisible for the second number chosen. Results are shown up to five digits.
import sys
def main():
x = 0
y = 0
k = 0
z = 0
print ("Hello! Let's compare some numbers!\nPress input to continue")
input()
print ("Insert the first number")
x = input()
print ("Insert the second number")
y = input()
print()
primo = []
secondo = []
#list multiples
while k < 99999:
k = int(k) + int(x)
print (k)
primo.append (k)
while z < 99999:
z = int(z) + int(y)
print(z)
secondo.append (z)
print("The numbers have been calculated! Press to proceed")
input()
print("LOADING...")
#reverse all numbers of the first list
def myReverser(n: float) -> float:
return float(''.join(list(reversed(str(n)))))
reversedList = [myReverser(i) for i in primo]
reversedList = [int(i) for i in reversedList]
#sum the multiple of the first number and its reversed and search common values in res and secondo
res = [
x
for x, y in zip(primo, reversedList)
if (x + y) in secondo
]
print()
print()
if len(res) == 0:
print ("No results found")
else:
print ("The numbers are: ", res)
#ending
print ()
print ("Thank you for using my program!")
print ()
choice = input ("Would you try with another number? [Y/N] ").capitalize()
if choice == "Y":
main()
if choice == "N":
sys.exit()
main()
#no copyright intended. This code is open-source. Feel free to use it in other projects.
该脚本可以比较两个给定的数字以找到第一个数字的倍数,该数字求和到它的反向创建一个可以被选择的第二个数字整除的数字。 结果最多显示五位数。
不错的尝试,但是颠倒数字的 function 呢? 你应该很高兴知道reversed
已经存在于 Python 中,你可以这样使用它:
>>> list(reversed(str(0.1223142131)))
['1', '3', '1', '2', '4', '1', '3', '2', '2', '1', '.', '0']
>>> float(''.join(reversed(str(0.1223142131))))
1312413221.0
所以你可以实现你自己的 function:
def myReverser(n: float) -> float:
return float(''.join(reversed(str(n))))
然后在整个list
使用它:
reversedList = [myReverser(i) for i in [1234, 124, 654]]
如果你不想要所有数字末尾的.0
,这意味着你不需要浮点数,而是int
,所以你可以这样做:
reversedList = [int(i) for i in reversedList]
好吧,你只打印长度范围,所以我根本不知道这将如何打印你的数字。 我相信,这里有一个简短的方法可以满足您的需求。
In [1]: [int(str(x)[::-1]) for x in [1234, 124, 654]]
Out[1]: [4321, 421, 456]
或者:
def reverse_items(l: list[int]) -> list[int]:
return [int(str(x)[::-1]) for x in l]
if __name__ == "__main__":
print(reverse_items([4321, 421, 456]))
output:
[1234, 124, 654]
这将创建一个包含 integer 个值的列表,这些值是通过反转给定列表项的字符串值生成的。
您可以使用内置的reverse()
或reversed()
方法反转 Python 中的列表。 这些方法将反转列表而不创建新列表。 Python reverse()
和reversed()
将反转原始列表 object 中的元素。
基于数字的旧多项式表示的无字符串方法。 通过递归长除法计算商和余数,并将它们作为一对记录在列表中。 一旦达到破坏条件,就以 10 的递减幂移动列表。
def digit_reverser(n):
def base_10_representation(n):
d = []
q, r = divmod(n, 10) # quotient, remainder
d.append((q, r))
if q < 10:
return d
d.extend(base_10_representation(q))
return d
# reversing the digits
d = base_10_representation(n)
n_digits = len(d)
return sum(r*10**(n_digits-i) for i, (_, r) in enumerate(d)) + d[-1][0]
n = 123456789
d = digit_reverser(n)
print(d)
Output
987654321
对于数字列表的扩展:
nrs = [1234, 124, 654]
nrs_rev = [digit_reverser(n) for n in nrs]
Output
[4321, 421, 456]
代码:
l = input().split(',')
l = list(map(lambda x: list(map(lambda d: int(d), x))[::-1], l))
print(l)
输入:
123,456,789
output:
[[3, 2, 1], [6, 5, 4], [9, 8, 7]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.