你如何将str的长度等于某个数字/长度的数字

时间:2017-10-02 19:31:59

标签: python string python-3.x

我正在使用if不等于代码,但是我需要等于代码专门用于以前的帖子的长度我试过这个len代码(pin(4))然而这在某种程度上仍然不起作用 提前谢谢你

pay =input("card or cash")
if pay ==("card"):
   pin = str(input("enter your pin number"))
while True:
   if len(pin)!=4:
      str(input("not four digit try again"))
      if len(pin(4)):
           print("payment cleared") 
   else:
      print("payment cleared")
      break

1 个答案:

答案 0 :(得分:1)

您的代码存在一些问题,从格式开始。您可以使用essentially any form of tabbing or spacing in python,但惯例和一般最佳做法是使用4个空格。

接下来,行。 if pay ==("card"):不必要地令人困惑。 if pay == "card":更清晰,功能相同。

你犯的第一个大错误是要求循环外的引脚。由于您的pin = str(input("enter your pin number"))发生在while True:循环之外,因此您的程序只会接受一次输入,然后将进入无限循环,除非发生len(pin)!=4的else子句。

线str(input("not four digit try again"))完全没有意义。在这里,您接受一行中的输入,而您肯定会改为使用print语句,并且最重要的是您不必将通过输入输入的值转换为字符串。一个简单的print("not four digits! try again.")就足够了。

如果运行,行if len(pin(4)):应该抛出一个错误,因为没有内置的称为引脚,您应该可以使用pin(4)调用它。正确的语法是if len(pin) == 4:

除了上面描述的代码之外,我在下面的代码中进行了一些更改以帮助实现可用性。我首先将pin的值转换为整数以检查该值是否为数字。我假设在示例中表示一个必须明确为数字的值是不合适的,但是如果你真的希望它是一个字符串,你可以使用正则表达式检查它是否是一个数字模块。像if re.match('[0-9]{4}', pin):之类的东西在这种情况下会起作用。

pay = input("card or cash")
if pay == "card":
    while True:
        try:
            pin = int(input("enter your pin number: "))
            if len(str(pin))!=4:
                print("not four digits! try again.")
            else:
                print("payment cleared")
                break
        except ValueError:
            print('not a valid number! try again.')