python編寫小技巧

1、實現計算求最大公約數和最小公倍數的函數

def gcd(x, y):
    (x, y) = (y, x) if x > y else (x, y)
    for factor in range(x, 0, -1):
        if x % factor == 0 and y % factor == 0:
            return factor


def lcm(x, y):
    return x * y // gcd(x, y)

2、實現判斷一個數是不是迴文數的函數

a = 1234567
a_st = str(a)
print(a_st[::-1])

3、字符串操作

# 將字符串以指定的寬度居中並在兩側填充指定的字符
print(str1.center(50, '*'))
# 將字符串以指定的寬度靠右放置左側填充指定的字符
print(str1.rjust(50, ' '))

******************hello, world!*******************
                                     hello, world!
str2 = 'abc123456'
# 檢查字符串是否由數字構成
print(str2.isdigit())  # False
# 檢查字符串是否以字母構成
print(str2.isalpha())  # False
# 檢查字符串是否以數字和字母構成
print(str2.isalnum())  # True
# 獲得字符串修剪左右兩側空格的拷貝
print(str3.strip())

4、數組操作

list2 = ['hello'] * 5
print(list2) # ['hello', 'hello', 'hello', 'hello', 'hello']
list1 = [1, 3, 5, 7, 100]
# 添加元素
list1.append(23)
# 根據位置刪除元素
del list1[1]
# 根據值刪除元素
list1.remove(100)
# 根據位置修改元素
list1.insert(1, 400)
list1[1] = 200
# 判斷是否在列表中
print(200 in list1)

5、打印

# 打印結果輸出到文件中
print('123', '456', sep='|',end=' ', file=open('sys.txt', 'w'))

6、數組排序

def main():
    list1 = ['orange', 'apple', 'zoo', 'internationalization', 'blueberry']
    list2 = sorted(list1)
    # sorted函數返回列表排序後的拷貝不會修改傳入的列表
    # 函數的設計就應該像sorted函數一樣儘可能不產生副作用
    list3 = sorted(list1, reverse=True)
    # 通過key關鍵字參數指定根據字符串長度進行排序而不是默認的字母表順序
    list4 = sorted(list1, key=len)
    print(list1)
    print(list2)
    print(list3)
    print(list4)
    # 給列表對象發出排序消息直接在列表對象上進行排序
    list1.sort(reverse=True)
    print(list1)


if __name__ == '__main__':
    main()

# 結果
['orange', 'apple', 'zoo', 'internationalization', 'blueberry']
['apple', 'blueberry', 'internationalization', 'orange', 'zoo']
['zoo', 'orange', 'internationalization', 'blueberry', 'apple']
['zoo', 'apple', 'orange', 'blueberry', 'internationalization']
['zoo', 'orange', 'internationalization', 'blueberry', 'apple']

6、設計一個函數返回給定文件名的後綴名

def get_suffix(filename, has_dot=False):
    """
    獲取文件名的後綴名

    :param filename: 文件名
    :param has_dot: 返回的後綴名是否需要帶點
    :return: 文件的後綴名
    """
    pos = filename.rfind('.')
    if 0 < pos < len(filename) - 1:
        index = pos if has_dot else pos + 1
        return filename[index:]
    else:
        return ''

7、楊輝三角

def main():
    num = int(input('Number of rows: '))
    yh = [[]] * num
    for row in range(len(yh)):
        yh[row] = [None] * (row + 1)
        for col in range(len(yh[row])):
            if col == 0 or col == row:
                yh[row][col] = 1
            else:
                yh[row][col] = yh[row - 1][col] + yh[row - 1][col - 1]
            print(yh[row][col], end='\t')
        print()


if __name__ == '__main__':
    main()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章