python-3.x 如何确保字符串中的第一个数字不是0?

ars1skjm  于 2023-01-27  发布在  Python
关注(0)|答案(3)|浏览(300)

这是哈佛大学的CS50P,给出的要求是我应该实现一个函数is_valid,检查用户输入是否符合梳妆台的要求。
我的代码满足所有要求,除了"使用的第一个数字不能是" 0 ""。
函数is_valid需要一个if/else语句,该语句接受用户输入(字符串)(以"s"的形式传递给is_valid),并确保其中的第一个数字不是0。
理想情况下,如果找到的第一个数字是0,它将返回False,因为这将使该板作为空板无效。
要求如下所列:https://cs50.harvard.edu/python/2022/psets/2/plates/
我的代码如下:(删除评论,因为我没有得到Github格式)

def main():
    plate = input("Plate: ")
    if is_valid(plate):
        print("Valid")
    else:
        print("Invalid")

def is_valid(s):
    if len(s) < 2 or len(s) > 6: 
        return False

    if s[0].isdigit() == True or s[1].isdigit() == True: 
        return False

    for i in range(len(s)): #
        if s[i].isdigit():
            if not s[i:].isdigit():
                return False

    if s.isalnum() == False:
        return False

    else:
        return True
main()
pqwbnv8z

pqwbnv8z1#

首先你必须循环字符串,如果当前字符是一个数字,那么如果它是0,返回False,否则,转到下一步

for i in s:
    if i.isdigit():
        if int(i)==0:
            return False
        else:
            break
cuxqih21

cuxqih212#

满足该计划所有要求的一个可能的完整解决方案是:

def main():
  plate = input("Plate: ")
  if is_valid(plate):
    print("Valid")
  else:
    print("Invalid")
def is_valid(s):
  #We verify that the first number is not zero and the others are alphanumeric 
  for i in range(len(s)):
    if s[i].isdigit() :  
      if int(s[i]) == 0 : 
        return False
      elif not(s[i+1::].isalpha()) == False: #Check if the following characters are digits
        return False
  #----------------------------------------------------------------
  if len(s) < 2 or len(s) > 6:
    return False
  elif s[0].isdigit() or s[1].isdigit(): #We optimize the logical operators
    return False
  elif s.isalnum() == False:
    return False
  else:
      return True
main()
cczfrluj

cczfrluj3#

如果数字等于零,则只需插入第一个数字验证:

if s[i].isdigit() and s[i] == '0':

那应该足够了!:)

相关问题