python练习题目求解答

输入一个字符串,确保该字符串满足一下条件:

  • 该字符串至少包含一个整数:
  • 每个整数必须在10到100之间
  • 整数之间必须要用连字符"-"来分开
  • 需要定义函数

例子:91-93-55-44

如果不满足则返回"False" 

本人是初学者希望大佬们能用尽量基本的Python方法来解答该问题!!

 

 

要用户输入字符串是这样。

a = input("输入一个字符串:")

print(funcname(a))

 

import re

def funcname(s):
    return re.match(r'^(([1-9]\d|100)-)*([1-9]\d|100)$', s)!=None

print(funcname("91-93-55-44"))
print(funcname("9-93-55-44"))
print(funcname("93-105-44"))
print(funcname("9-93-aa-44"))
3

 

# 这是纯正则表达式的方法
import re

def funcname(s):
    return re.match(r'^(([1-9]\d|100)-)*([1-9]\d|100)$', s)!=None

print(funcname("91-93-55-44"))
print(funcname("9-93-55-44"))
print(funcname("63-105-44"))
print(funcname("93-100-44"))
print(funcname("93-100-44.9"))
print(funcname("10-AA-66"))

 

# 这是比较基本的方法
import re

def funcname(s):
    li = s.split("-")
    for v in li:
        if re.search(r'\D', v) or not 10<=int(v)<=100:
            return False
    return True

print(funcname("91-93-55-44"))
print(funcname("9-93-55-44"))
print(funcname("63-105-44"))
print(funcname("93-100-44"))
print(funcname("93-100-44.9"))
print(funcname("10-AA-66"))

 

不用正则表达式,也可以改成

        if not v.isdigit() or not 10<=int(v)<=100:

 

谢谢,大佬!是对的! 还有个问题: 就为什么连字符在数字之间不用考虑? 或者说为什么不添加条件来限制输入变量

因为一开始就用s.split("-") 以连字符"-"来分割成list列表了啊。

之后只判断列表中的元素就好了