你怎么看两个变量是否有相似或相同的字符?

时间:2017-10-07 18:18:25

标签: python string variables

我试图通过使用in命令来查看用户是否可以正确猜测随机生成的四位数字,但如果他得到一些正确的数字,我们会通知用户。

number=random.randit(1000,9999)
number=str(number)
guess=input("Guess number")
if any (guess in number):
   print("Some digits correct")

4 个答案:

答案 0 :(得分:0)

如果您不需要查看数字的位置是否正确,则一种方法是将numberguess转换为数字组。例如:

number = 2145
guess = 1078
set(str(number)) & set(str(guess))  # {'1'}

否则,使用内置difflib可能也很有用。

希望这有帮助!

答案 1 :(得分:0)

创建随机数后,将其转换为字符串。 将数字转换为字符串后,用户输入一个字符数组,然后为每个字符检查随机数是否包含用户输入字符。 对于猜测正确的每个字符,增加一个称为正确猜测的变量。 然后你可以通过将正确猜测的数除以输入猜测的数组长度来给出用户正确程度的百分比/权重。

答案 2 :(得分:0)

比较字符串的一种方法是使用Counter计算每个数字的出现次数:

>>> from collections import Counter
>>> Counter('9993')
Counter({'9': 3, '3': 1})
>>> Counter('3399')
Counter({'3': 2, '9': 2})

然后,您可以从0迭代到9,并从两个计数器中找到最小值:

>>> c1 = Counter('3399')
>>> c2 = Counter('9993')
>>> [(i,min(c1[str(i)], c2[str(i)])) for i in range(10)]
[(0, 0), (1, 0), (2, 0), (3, 1), (4, 0), (5, 0), (6, 0), (7, 0), (8, 0), (9, 2)]

这意味着共有一个3和两个9

答案 3 :(得分:0)

您的生成器必须检查用户猜测中的每个数字:

number=randint(1000,9999)
number=str(number)
guess=input("Guess number")
if any (i in number for i in str(guess)):
    print("Some digits correct")