我知道这是一个数据对象,但我是python的新手,我不明白user_output在做什么。试图理解这一切。
def user_output(self,check): #data object
output = ""
#loop of all the info for __user_arr
for user in self.__user_arr:
if user.user_bot == str(check):
output += '''
<div class='about'>
<h1>{user.user_name}</h1>
<h2>My favorite band is: {user.user_band} </h2>
<div class='business'>
<p>Why I want the tickets:<br /> {user.user_business}</p>
</div>
</div>
'''
return output.format(**locals())
else: #this will spit an error if the user do not answer the last question correctly.
output = '''<div class='error'><h2>Turns out you are a robot. No tickets for you </h2></div>'''
return output
答案 0 :(得分:0)
它将为每个用户生成一个带有一些喜欢的乐队等的div
块,前提是用户标志user_bot
等于check
(据我所知,一种机器人检查)。如果用户是机器人(未通过检查),程序将生成Turns out you are a robot..
块。
答案 1 :(得分:0)
这看起来像一个函数,而不是一个对象。它会检查您的用户是否是机器人。它通过检查您的用户(对于每个用户)是否将user_bot
作为输入的字符串来执行此操作,可能是识别机器人的字符串。然后你写了一些我对输出字符串一无所知的东西,可能卖掉了票。
这个函数似乎只对第一个用户执行此操作,但因为它在第一个if else
子句中返回。
答案 2 :(得分:0)
user_output()
似乎是某个类中的一种方法。它正在使用“穷人”的诱惑工具来输出HTML片段。
似乎使用了一个循环for user in self.__user_arr:
,但这有点像假。它使用此构造从self.__user_arr
中选择第一个项目。因为它很快就会在所有条件下从函数返回,所以它永远不会返回到循环的头部来检查后续用户(如果有的话)。
另请注意,self.__user_arr
的双引号前缀将其标记为对象实现的私有部分。一个非常私密的部分。单个下划线通常表示“私有”。双下划线没有超精确的定义,但“非常私密”或“非常依赖于实现”将是我的猜测。
如果第一个用户的user_bot
属性是一个等于check
值的字符串(如字符串化),则实例化模板。它首先设置一个字符串变量(output
),该变量嵌入了与{a_variable}
的{{1}}方法兼容的变量标记(str
)。调用format
使用output.format(**locals())
(它是所有当前变量赋值的查找字典,即符号表)进行字符串格式化操作。 locals()
构造意味着“使用这个dict(或类似dict)对象,好像它是一组关键字参数。”结果是,**locals()
中的子字符串output
直接插入到{user.user_band}
字符串中。然后返回填充的字符串。
如果output
测试失败,则返回一个简单的错误字符串。
在任何一种情况下,都会返回一个字符串,并退出该方法。
唯一值得考虑的另一个案例是user.user_bot == str(check)
集合中没有用户会怎样?然后循环将永远不会运行,并且该方法将隐式返回self.__user_arr
。