python 代码学习-day1

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_26566137/article/details/82290153
1)按指定格式输出字符
names =[{'name':'Bart'},{'name':'Lisa'},{'name':'Maggie'},{'name':'Saggie'}]
def namelist(names):
    nums = len(names)
    if nums ==0:
        return ''
    elif nums ==1:
        return (names[0]['name'])
    elif nums ==2:
        return(names[0]['name']+'&'+names[1]['name'])
    else:
        name_last = names[-2]['name'] +'&' + names[-1]['name']
        name_li =''
        for i in range(nums-2):
            name_li =name_li + names[i]['name']+','
        name_li += name_last
        return name_li
print(namelist(names))

'''
','.join(['kk','k2'])
'kk,k2'
','.join(['kk','k2','iu'])
'kk,k2,iu'
'''
def namelist(names):
    if len(names)>1:
        return '{} & {}'.format(','.join(name['name'] for name in names[:-1]),
                                names[-1]['name'])
    elif names:
        return names[0]['name']
    else:
        return ''
print(namelist(names))

(3)将长方形划分成若干个正方形
# def spilt_quare(x,y):
#     if x < y:
#         rst = x
#         temp = x
#         y = temp
#         x = y - x
#     else:
#         return spilt_quare(y,x)
#     spilt_quare(x, y)
#     return ([].append(rst))
#首先,确定x,y的顺序;然后,x,y会相互替换;最后,会依次循环,循环用while(变量)来实现;

def sqInrect(a,b):
    if a == b:
        return None
    res = []
    while b:
        b,a = sorted([a,b])
        res += [b]
        a,b = b,a-b
    return res
print(sqInrect(5,3))

# print(spilt_quare(5,3))


# def square_digits(num):
#     a=[]
#     for i in str(num):#循环
#         a.append(str(int(i)*int(i)))
#     return int(''.join(a))
#
# print(square_digits(9119))#8111814)输入数字,按一定规律运算输出结果;
def square_digits(num):
    return int(''.join(str(int(d)**2) for d in str(num))) #循环跟函数在一条句子里面实现
# print(square_digits(9119))#811181


def square_digits(num):
    return int("".join([str(n**2) for n in map(int,str(num))]))
print(square_digits(9119))#811181

def test_map(num):
    new_num =  map(int, str(num))
    return new_num
print(test_map(123))
print(list(test_map(123)))
print(type(test_map(123)))
'''
<map object at 0x000001F8143E7908>
<class 'map'>
python2打印map对象可以直接print map
但是python3需要将之转为list对象,print(list(map))
'''

def square_digits(num):
    return int(''.join([str(int(x)**2 for x in list(str(num)))]))
'''
list(str(124))
['1', '2', '4']
list(124)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: 'int' object is not iterable

list函数
list() 方法用于将元组转换为列表。
注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。
aTuple = (123, 'xyz', 'zara', 'abc');
aList = list(aTuple)
print "列表元素 : ", aList
列表元素 :  [123, 'xyz', 'zara', 'abc']
list('abf'))
['a', 'b', 'f']


def sum_two_smallest_numbers(numbers):
    return sum(sorted(numbers)[:2])

def sum_two_smallest_numbers_02(numbers):
    #两个循环实现
    min_01 = numbers[0]
    min_02 = numbers[1]
    # for idx,i in  enumerate(numbers):
    #     if min_01>numbers[idx]:
    #         numbers[0] = i
    #         numbers[idx] = min_01

    #####
    for i in numbers:
        if i < min_01:
            numbers[0] = i
    ####上述代码存在问题,取最小的时候,其它位置的值未被替换掉,于是存在两个最小值;
    for i in numbers[1:]:
        if i < min_02:
            numbers[1] = i
    return numbers[0]+numbers[1]
def sum_two_smallest_numbers_03(numbers):
    #一个循环实现,好像很难,,待解决!!!
    min_01 = numbers[0]
    min_02 = numbers[1]
    if min_01 > min_02:
        numbers[0] = min_02
        numbers[1] = min_01

    for idx,i in numbers:
        if min_01 > i:
            min_01 = i
def is_triangle(a,b,c):
    #三角形成立的条件:任意两边之和大于第三边或者任意两边之差小于第三边;
    if a<0 or b<0 or c<0:
        return __boolen_true(a+b,c) and __boolen_true(a+c,b) and __boolen_true(b+c,a)
def __boolen_true(a,b):
    if a>b:
        return True

print(sum_two_smallest_numbers([1,6,5,8,3]))
print(sum_two_smallest_numbers([-1,-6,5,8,3]))
print(sum_two_smallest_numbers_02([1,6,5,8,3]))
print(sum_two_smallest_numbers_02([-1,-6,5,8,3]))

'''

猜你喜欢

转载自blog.csdn.net/sinat_26566137/article/details/82290153