为了账号安全,请及时绑定邮箱和手机立即绑定

使单个字符串成为列表的一部分

使单个字符串成为列表的一部分

开满天机 2023-02-22 15:55:42
你们能帮帮我吗..我试图找到如何将单个字符串放入列表中的方法。问题是这样的:系统使用 validate_users 函数来检查用户列表是否有效。有效用户是至少 3 个字符长的用户。例如,['taylor', 'luisa', 'jamaal'] 都是有效用户。在这个例子中调用它时,有些地方是不对的。你能找出要解决的问题吗? def validate_users(users):      for user in users:        if is_valid(user):          print(user + " is valid")        else:          print(user + " is invalid")        validate_users("purplecat")我试过但仍然没有得到正确的结果,purplecat is valid结果应该是这样的,但仍然喜欢p is invalidu is invalidr is invalidp is invalidl is invalide is invalidc is invalida is invalidt is invalid有人可以解释吗?
查看完整描述

4 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

您将 'purplecat' 作为字符串传递,因此当循环通过时,它会将字符串的每个元素视为要迭代的一件事。尝试将其放入单元素列表中:

validate_users(['purplecat'])


查看完整回答
反对 回复 2023-02-22
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

问题是你在这里迭代一个字符串:for user in users但是users == "purplecat"

尝试这样调用您的函数:validate_users(["purplecat"])


查看完整回答
反对 回复 2023-02-22
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

在此示例中,您将字符串“purplecat”作为函数 validate_users 的参数传递。所以,用户=“紫猫”

在 validate_users 函数中,您使用了迭代参数用户的 for 循环。在python中,如果对字符串类型的变量使用for循环,那么for循环会遍历字符串中的所有字符。

如果你想得到像“purplecat is valid”这样的输出,那么你需要使用“validate_users(["purplecat"])”。

在这种情况下,您传递了一个字符串列表,因此 validate_users 中的 for 循环将迭代列表中的所有字符串(在这种情况下,它只会迭代一次,因为列表只有 1 个元素)。


查看完整回答
反对 回复 2023-02-22
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

正如其他人所指出的那样,如果您想制作一个包含字符串的单元素列表,您可以使用字符串对象[my_string]在哪里,例如。my_string"purplecat"


如果在参数中传递字符串,则有几个备选方案可以让您的函数更优雅地执行操作users。


一种选择是接受字符串作为列表的替代,users如果变量不是列表,则将其重新分配给单元素列表:


def validate_users(users):

    if not isinstance(users, list):

        users = [users]

    # then carry on as before

另一种选择是以更可预测的方式失败:


def validate_users(users):

    if not isinstance(users, list):

        raise ValueError("users must be a list")

    # then carry on as before

然后,您可以编写函数的其余部分,而不必担心是否向您传递了列表以外的内容。在后一种情况下,由调用者确保它传入列表或处理任何ValueError.


为简单起见,我在这里不考虑元组,尽管您可能希望接受元组作为列表的替代方案,例如


    if not isinstance(users, list):

你可以有


    if not isinstance(users, (list, tuple)):


查看完整回答
反对 回复 2023-02-22
  • 4 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信