有人可以用简单的方式为我解释这段代码.
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)
它是发电机吗?
它是如何工作的?
提前感谢您的任何答案.
你有一个列表理解和一个生成器表达式.
列表理解是:
[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的数字),则提前停止循环.
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |