有人可以帮我解释这段代码吗?

use*_*175 1 python generator

有人可以用简单的方式为我解释这段代码.

prompts = ("Enter Strength Attribute, between 1 and 50: ", "Enter Skill Attribute, between 1 and 50: ") # I already now this so no need to explain it 

answers = [int(input(p)) for p in prompts]
if not all(0 < a <=50 for a in answers):
    # other code here
Run Code Online (Sandbox Code Playgroud)

它是发电机吗?

它是如何工作的?

提前感谢您的任何答案.

Mar*_*ers 5

你有一个列表理解和一个​​生成器表达式.

列表理解是:

[int(input(p)) for p in prompts]
Run Code Online (Sandbox Code Playgroud)

并从提示列表中生成一个整数列表,向用户询问一系列数值.

它也可以表示为:

answers = []
for p in prompts:
    result = int(input(p))
    answers.append(result)
Run Code Online (Sandbox Code Playgroud)

接下来是:

(0 < a <=50 for a in answers)
Run Code Online (Sandbox Code Playgroud)

这是生成器表达式.它测试每个数字是否为0(不包括)和50(包括)之间的值.

all()函数将一次循环生成器表达式一个结果,并将返回False其中一个结果的时刻False,或者True当它耗尽生成器结果且未False找到任何值时.

你可以用以下代码替换if all(...)测试:

result = True
for a in answers:
    if not 0 < a <= 50:
        result = False
        break

if result:
Run Code Online (Sandbox Code Playgroud)

这将达到同样的效果; 循环answers遍历,但如果任何测试是False(不是大于0且小于或等于50的数字),则提前停止循环.