【问题标题】:for loop over a listfor 循环遍历列表
【发布时间】:2021-10-09 12:09:47
【问题描述】:

我定义了一个 ask_phone_number() 函数,并在该函数内定义了一个 for 循环。我希望 for 循环遍历列表 (列表包含 1 字符串)。我在 for 循环中有一个 elif 语句,用于计算 phone_number 中字符串的字符数, 但它返回 1 作为计数。我猜这是因为 python 解释器将字符串本身视为我列表中的唯一项目。我的问题是如何告诉 python 计算 phone_number 列表中字符串的字符,而不仅仅是 phone_number 中的项目" 请查看下面的代码:

def ask_phone_number(correct, phone_number):
    while correct == False:
        phone_number = [input("Enter your phone number >>> ")]
        for ch in phone_number:
            if ("+1" not in ch):
                print("Make sure to enter '+1' and your 10 digit US or Canada phone number")
            elif (phone_number.count(ch) < 12):
                print("Your phone number is incomplete")
            else:
                correct = True
    else:
        return phone_number


if __name__ == "__main__"
   ask_phone_number(False, "")

【问题讨论】:

  • 为了测试和调试,请对“输入”进行硬编码。或者请edit您的问题向我们展示实际输入。
  • 请提供minimal reproducible example。您的函数有两个参数,但您在没有任何参数的情况下调用它,因此这不可能代表您遇到问题的代码。
  • 即使在您编辑之后,代码也无法运行。你真的试过了吗?
  • @Ulrich 我已经修复了函数调用中的参数......只是一个愚蠢的错误
  • 在任何情况下您会向该函数传递不同的值吗?喜欢ask_phone_number(True, "+143765876912")?试图理解为什么你有这些参数......

标签: python list for-loop


【解决方案1】:

一些问题:

  • 您的代码将phone_number 创建为一个列表。去掉方括号。

  • 一旦上述问题得到解决,您的循环就会获取电话号码中的每个字符,然后计算电话号码中那个字符出现的次数。所以这将至少为 1(因为您从中获取了该字符),但显然与电话号码中的位数无关。

  • 我没有看到将correctphone_number 作为参数传递的实用程序。该函数的目标是询问用户电话号码,所以它不应该是一个参数。而正确与否是由函数来判断的,而不是论据。

所以:

def ask_phone_number():
    while True:
        phone_number = input("Enter your phone number >>> ")
        if not phone_number.startswith("+1"):
            print("Make sure to enter '+1' and your 10 digit US or Canada phone number")
        elif len(phone_number) < 12:
            print("Your phone number is incomplete")
        else:
            return phone_number

【讨论】:

  • 非常感谢@trincot的见解
【解决方案2】:
phone_number.count(ch)

计算字符串 ch 出现在 phone_number 列表中的次数。这始终是 1。 你应该使用

elif len(ch) < 12:

【讨论】:

  • 感谢@randomer64 ...它工作得很好
  • 我很高兴它有效,如果您将其标记为正确/有用的答案,它会让我更快乐!
猜你喜欢
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 2020-12-15
  • 2019-09-07
  • 2021-04-01
  • 2016-02-05
  • 2023-01-24
相关资源
最近更新 更多