python - 根据位置值检查 5 位数字是否在列表中
问题描述
在 Python 中,我试图将 10 个 5 位数字的列表与用户输入的三个 5 位数字进行比较。例如,如果列表中的一个数字是 46590,而用户输入了 46509,则表明用户只正确输入了前三个数字。
该列表位于 txt 文件中。这是我到目前为止编码的内容:
name = input("Enter the file name: ")
number1 = str(input("Enter in your first lottery ticket: "))
number2 = str(input("Enter in your second lottery ticket: "))
number3 = str(input("Enter in your third lottery ticket: "))
f=open("lottery.txt")
exs=f.readlines()
exs = [x for x in exs if x.strip()]
mylist = [line.rstrip('\n') for line in exs]
for line in mylist:
if line == number1:
print("entire number equal")
elif line[0][0] == number1[0]:
print("first digit equal")
elif line[0][0] == number1[0] and line[1][0] == number1[1]:
print("first and second digit equal")
elif line[0][0] == number1[0] and line[1][0] == number1[1] and line[2][0] == number1[2]:
print("First second and third digit equal")
我尝试使用布尔表达式,但我不断收到错误消息。现在,当我运行上面的代码时,它会打印出两次“第一个数字相等”。
提前致谢!
解决方案
您可以利用这一事实,True
并在 python 中False
进行评估,1
并0
只取布尔值的总和来确定有多少是正确的:
win = "46590"
guess = "46509"
print(sum(a == b for a, b in zip(win, guess)))
# prints 3
如果要报告每个值,还可以循环遍历:
win = "46590"
guess = "46509"
for i, correct in enumerate(a == b for a, b in zip(win, guess)):
print(f"digit {i} correct: {correct}")
印刷:
digit 0 correct: True
digit 1 correct: True
digit 2 correct: True
digit 3 correct: False
digit 4 correct: False
如果你有一个获胜者名单,你可以使用相同的技术来查看每个获胜者有多少是正确的:
winners = ["16129", "46590", "79562", "47597", "25649", "11111"]
guess = "46509"
print([sum(a == b for a, b in zip(win, guess)) for win in winners])
# [2, 3, 1, 2, 1, 0]
# get max correct:
print("Best:", max(sum(a == b for a, b in zip(win, guess)) for win in winners))
# Best: 3
推荐阅读
- c - 影响 char 上的移位运算符
- python - 我找到了一个掩码检测程序,想知道是否可以用其他东西替换 tensorflow 库
- r - R 包开发 - 如何处理包安装时的 C 库链接错误
- javascript - 如何根据选中的单选按钮禁用某些复选框?
- postgresql - 'DISABLE TRIGGER ALL' 是否也会禁用 Postgres 中的域检查?
- javascript - 通过道具将功能从类组件编辑状态传递到基于功能的组件不起作用
- identityserver4 - IdentityServer4 Windows 身份验证缺少回调实现
- java - Kafka Consumer 中更好的错误处理方式
- javascript - 如何在 vue 中全局配置 vee-validate?
- firebase - 如何从 Firebase 存储中获取可公开访问的 URL?