python - 循环遍历列表直到语句为真
问题描述
我正在尝试在python中逐项循环列表
我还想检查 x 是否是项目,如果是,我想将结果存储到一个新列表中,然后打印它。
这是我尝试过的代码
from random import randint
s = "test"
#transform to asci
l = ''.join(str(ord(c)) for c in s)
#transform to 1 digit numbers
n = [l[i:i+1] for i in range(0, len(l), 1)]
#make a empty list
r = []
#fill the empty list with new data
while True:
a = randint(0,9)
b = randint(0,9)
for z in n:
if a+b == z:
print(''.join(str(a)+str(b)))
break
else:
print('x')
break
我想要做的基本上是获取 ascii 代码并将其拆分为 1 位数字然后这些数字会像 1 = 0+1 = 01 2 = 1+1 = 11 我想遍历列表并检查那些陈述为真,然后将它们保存到新列表中
解决方案
我认为你的意图在你问题的最早版本中是最清楚的。据我所知,您希望继续生成随机数字,直到找到两个加起来等于列表中的一个数字为止n
。您的原始代码几乎就在那里,除了您将整数与字符串进行比较,并且您需要一种方法来打破这两个循环。下面的代码应该适合你。
from random import randint
n = ['1','2','3','5']
z = []
# set a sentinel to break out of both loops when needed
done = False
while not done:
a = randint(0,9)
b = randint(0,9)
for x in n:
if str(a+b) == x:
z.append(''.join(str(a)+str(b)))
# break out of both loops
done = True
break
print(z)
# ['21'] or something else
我已转换a+b
为字符串,但您可能更愿意将条目转换为n
更早的整数。
由于内部循环仅用于检查当前数字是否匹配,因此可以将其替换为 Python 的in
运算符,如下所示:
from random import randint
n = ['1','2','3','5']
z = []
while True:
a = randint(0,9)
b = randint(0,9)
if str(a+b) in n:
z.append(str(a)+str(b)) # equivalent to ''.join(str(a)+str(b))
break
print(z)
# ['50'] or something else
更新
您在评论中提到(现在缺少)您想为n
. 要使用您开始的代码执行此操作,您需要颠倒循环的顺序:外部循环遍历 的每个元素,n
内部循环重复,直到找到合适的数字对:
from random import randint
n = ['1','2','3','5']
z = []
for x in n:
while True:
a = randint(0, 9)
b = randint(0, 9)
if a+b == int(x):
z.append(str(a)+str(b))
break
print(z)
# ['01', '20', '12', '23'] or similar
使用此代码,每对的第一个数字将均匀分布在 0 之间x
,第二个数字将始终等于x
减去第一个数字。直接生成这样的对更有效,而不需要内部循环:
from random import randint
n = ['1','2','3','5']
z = []
for x in n:
a = randint(0, int(x))
b = int(x) - a
z.append(str(a)+str(b))
print(z)
# ['01', '02', '21', '05'] or similar
推荐阅读
- sharepoint - 使用 Microsoft Graph API 获取 SharePoint 文件夹和文档
- java - 无法循环遍历 FXML 元素并将其中一些元素添加到列表中
- reactjs - React-Table v7 的全局过滤器
- r - 除法真假矩阵和输出比率
- javascript - 如何将所有对象合并为一个对象javascript
- python-3.x - 如何将带有数字的元组列表更改为数字列表?
- google-drive-api - 生成的 Google Drive 文件夹 ID 的 `google-drive` 模式
- vba - 没有找到细胞
- .net-core - 如何在 .NET Core Kestrel Web API 中设置请求超时?
- jquery - JQuery 删除验证