检查数字在两个不同数字中的位置是否相同



Q)写一个程序来检查哪个位置的数字相同,并打印出它们相同的位置

以为例,如果n1=1234453, n2=2444853打印

第10位相同

第1000位相同

如何解决这个问题,使其工作?它显示的是第3位而不是第100位?

n1=int(input())
n2=int(input())
ns1=str(n1)
ns2=str(n2)
l1=len(ns1)
for x in ns1:
for y in ns2:
if x==y:
if int(ns1.index(x))==int(ns2.index(y)):
print("Same at %dth position"%(ns1.index(x)))
else:
print("No digits are same")
else:
print("No digits are same")

使用zip,enumerate10的幂:

ns1 = "1234453"
ns2 = "2444853"
found = False
for i, (x, y) in enumerate(zip(ns1[::-1], ns2[::-1])):
if x == y:
found = True
print(f"Same at {10**i}th position")
# no else here!! just because of a mismatch at the first digit
# does not mean there aren't any matches later
if not found:
print("No digits are same")
# Same at 1th position
# Same at 10th position
# Same at 1000th position

你的嵌套循环做了太多的工作,为第一个字符串中的每个字符循环遍历整个第二个字符串。zip更有效,只是对两个(反向)字符串进行成对(并行)迭代。

一些文档:

  • zip
  • enumerate
  • 切片符号:docs,这里有扩展线程

相关内容

  • 没有找到相关文章

最新更新