python-3.x - 如何比较两个列表并返回一个包含共享相同索引的元素的列表?
问题描述
我需要获取 4 位的用户输入,将其与随机生成的 4 位数字进行比较,然后返回它们在相同索引中的共同值。
例如: 密码:4667
用户输入:3608
输出:_ 6 _ _
不幸的是,当我运行我已经编写的内容时,它会在密码上的任何位置打印数字,无论它们在用户输入中的位置如何,然后它还会为每次迭代返回一个数字“_”在for
循环中。
这是我到目前为止所拥有的:
from random import randint
def randomNumber():
numberList = []
digits = 0
while digits != 4:
numberList += [randint(0,9)]
digits += 1
return numberList
secretNumber = randomNumber()
guessNumber = list(input("Enter a four digit number: "))
guessNumber = list(map(int, guessNumber))
guessList = guessNumber.copy()
correctNumbers = []
numberPosition = []
numberPosition.clear()
for number in guessNumber:
if number in secretNumber:
correctNumbers.append(number)
for n in secretNumber:
if n == number:
numberPosition.append(n)
else:
numberPosition.append("_")
如果此代码块存在任何间距/制表符问题,我深表歉意,我从 Jupyter 笔记本上复制了它。
谢谢!
解决方案
尝试这个:
def f(a, b):
for i in range(min(len(a), len(b))):
if a[i] == b[i]:
yield i, a[i]
else:
yield i, None
a, b = '123456', '2335678'
print(''.join(['_' if c is None else c for _, c in f(a, b)]))
推荐阅读
- java - 在 internalStorage 中保存 mp3 文件的问题
- wordpress - 如何将序列化数据保存到 MySQL 的元字段中?
- jquery - 如何使用 jQuery 用表单的文本字段填充表格?
- javascript - Android App软键盘覆盖webview嵌入的网页textarea
- javascript - 显示限制列表并显示更多按钮
- firebase - 响应中带有 google 'Access-Control-Allow-Credentials' 标头的 Flutter Web firebase_auth 登录为 ''(空)
- database - Mongo DB $look up 方法用于数组而不是集合中的字段
- angular - MapBox Leaflet 路由机器无法识别
- jquery - 显示了 Select2 值,但实际上是空的
- javascript - 主题变量的生命周期