一.题目描述
实现一个经典"猜数字"游戏。
给定答案序列和用户猜的序列,统计有多少数字位置正确(A),有多少数字在两个序列都出现过但位置不对(B)。
输入包含多组数据。
每组输入第一行为序列长度n,第二行是答案序列,接下来是若干猜测序列。
猜测序列全0时该组数据结束。n=0时输入结束。
二.示例
样例输入:
4
1 3 5 5
1 1 2 3
4 3 3 5
6 5 5 1
6 1 3 5
1 3 5 5
0 0 0 0
10
1 2 2 2 4 5 6 6 6 9
1 2 3 4 5 6 7 8 9 1
1 1 2 2 3 3 4 4 5 5
1 2 1 3 1 5 1 6 1 9
1 2 2 5 5 5 6 6 6 7
0 0 0 0 0 0 0 0 0 0
0
样例输出:
(1,1)
(2,0)
(1,2)
(1,2)
(4,0)
(2,4)
(3,2)
(5,0)
(7,0)
解释:
输入:
第一行,数字表示答案是多少个数字组成的序列。第二行为答案序列。接下来每一行为猜测的序列。
输出:
接下来每一行括号内左边的数表示猜测序列中位置和值都猜对的个数(A),右边的数表示仅猜对值的个数(B)。
我的代码如下:
n = int(input())
l = []
while n != 0:
daan = [int(x) for x in input().split(' ')]
caice = [int(x) for x in input().split(' ')]
while any(caice):
a = 0
b = 0
for v in range(0, n): # 除第一次,剩下的不会进行比较
if daan[v] == caice[v]:
a += 1
for i in range(1, 10):
m = 0
n = 0
for j in range(0, n): # 完全没有进入此循环
if daan[j] == i:
m += 1
if caice[j] == i:
n += 1
if m < n:
b += m
else:
b += n
l.append([a, b - a])
caice = [int(x) for x in input().split(' ')]
n = int(input())
for i in l:
print('(%d,%d)' % (i[0], i[1]))
但我的结果:
刚学python没多久,基本上是自己摸索,不太明白为什么会出现这样的问题,万分感谢各位解答