天天看点

Python练手题目(九)

1. 翻转一个数字

给定一个数字,写一个函数输出其反向数字。(例如,给出123答案是321),数字应该保留他们的标志,即反转时负数仍应为负数。

大家看到翻转会不会想到reverse函数呢?如果没有想到也没关系,我们可以想另一种办法 ,需要做的首先对输入的数字进行正负判断,并将输入的数字转化为字符串,然后对字符串进行操作,比如前面用到的join函数,以及format函数。

代码如下:

def reverse_number(num):
    if num >= 0:
        re_num = int(''.join(str(num)[::-1]))
    else:
        re_num = int(''.join('-{}'.format(str(-num)[::-1])))

    return re_num

print(reverse_number(123))
print(reverse_number(-456))
print(reverse_number(1000))           

复制

2. 检查IP

编写一种算法,以十进制格式识别有效的IPv4地址。如果IP由四个八位字节组成,其值在0和之间255,则应视为有效。该函数的输入保证是单个字符串。

例如:有效输入

1.2.3.4

123.45.67.89

无效输入

1.2.3

1.2.3.4.5

123.456.78.90

123.045.067.089

此外,还需要注意的是,前导零(例如01.02.03.04)被视为无效。

我们需要用if判断语句把几种输出为false的情况列举出来,那么其他情况则为True.

代码如下:

def is_valid_IP(IP):
    ip = IP.split('.')
    if ' ' in IP:
        return False
    if len(ip) != 4:
        return False
    for i in ip:
        if len(i) >1 and i[0] == '0':
            return False
        elif eval(i) < 0 or eval(i) >255 or len(i) >3:
            return False
    return True
print(is_valid_IP('12.255.56.1'))           

复制