验证用户输入python的最佳方法

时间:2021-07-20 17:41:20

标签: python python-3.x

我是编码新手,这是我在这里的第一个问题! 我正在尝试使用一些自动化工具,在我的第一步中,我想从用户那里获取数据并对其进行验证。

我正在尝试从用户那里获取域名并检查 TLD,如果它的“.co.il”在不打印消息的情况下继续执行其他任务。

我阅读并尝试了一些东西,但对我没有任何作用。

这是我最后一次尝试代码:

domainBuy = input('Please Enter Domain Name: ')

def domaincheck(domainBuy):
    if '.co.il' in domainBuy:
        print('DOMAIN GOOD!')
    else:
        print('bad')

我会感谢任何提示!谢谢!

3 个答案:

答案 0 :(得分:1)

由于域名位于 URL 末尾,因此最好使用 endswith()

<块引用>

x.endswith('.co.il') - 如果 x.co.il 结尾,则返回 True,否则返回 False

domainBuy = input('Please Enter Domain Name: ')
def domaincheck(domainBuy):
    if domainBuy.endswith('.co.il'):
        print('DOMAIN GOOD!')
    else:
        print('bad')

# calling your function
domaincheck(domainBuy)

答案 1 :(得分:0)

最好先定义你的函数,然后再调用它们 我猜混淆来自在函数中使用与输入相同的变量名,也许这会让它更清楚?

def domaincheck(domainBuy):
    if '.co.il' in domainBuy:
        print('DOMAIN GOOD!')
    else:
        print('bad')

domain_name = input('Please Enter Domain Name: ')
domaincheck(domain_name)

正如 Barmar 在评论中指出的那样,domainBuy.endswith('co.il') 是一个更好的测试。

答案 2 :(得分:0)

虽然稍微复杂一些,但在验证输入模式时通常会使用正则表达式,并且可以在 endswith 不够用的情况下应用于更广泛的应用程序。

示例:

import re

def domaincheck(input_str):
    pattern = re.compile(r'\.co\.il$')
    if pattern.search(input_str):
        print("Good")
    else:
        print("Bad")

domaincheck('test.co.il')
domaincheck('test.co.il.invalid.com')

输出:

Good
Bad

更新:

解决有关循环直到输入有效 URL 的问题:

import re

def domaincheck(input_str):
    pattern = re.compile(r'\.co\.il$')
    if pattern.search(input_str):
        print("Good")
        return True
    else:
        print("Bad")
        return False

while True:
    user_input = input("Enter URL: ")

    if domaincheck(user_input):
        break