python學習之代碼練習三(三個數排序)

python學習之代碼練習三(三個數排序)

題目

題目鏈接:1454
在這裏插入圖片描述

實現代碼

#!usr/bin/python
# coding=utf-8

import re


def quick_sort(lis):
    if len(lis) <= 0:
        return []
    else:
        small = [x for x in lis[1:] if x < lis[0]]
        big = [x for x in lis[1:] if x >= lis[0]]
        return quick_sort(small) + [lis[0]] + quick_sort(big)


input_str = raw_input()
if not re.findall('[0-9]+[,]+', input_str):
    exit()
split_str = input_str.split(',')
if len(split_str) != 3:
    exit()
try:
    split_str = map(int, split_str)#將列表中的元素的類型由字符改爲數字
except ValueError:
    exit()
split_str = quick_sort(split_str)
result = ""
for index in range(len(split_str)):
    if index == len(split_str) - 1:
        result = result + str(split_str[index])
    else:
        result = result + str(split_str[index]) + " "
print result

關鍵點

  • 快速排序
    這裏可以使用自己寫的快速排序,也可以使用python自帶的內置排序函數 sort()
def quick_sort(lis):
    if len(lis) <= 0:
        return []
    else:
        small = [x for x in lis[1:] if x < lis[0]] #比lis[0]小的放到small列表裏
        big = [x for x in lis[1:] if x >= lis[0]] #比lis[0]大的放到big列表裏
        return quick_sort(small) + [lis[0]] + quick_sort(big) #重新組合(遞歸調用)
  • 將字符型列表轉換成整型列表
    如: 將 [‘0’, ‘1’, ‘2’, ‘3’] 轉換成 [0, 1, 2, 3]
split_str = map(int, split_str) #split_str轉換前是一個字符型列表,轉換後爲一個整型列表
re.findall('[0-9]+[,]+', input_str) #匹配只包含數字和逗號.
  • 字符串和數字的拼接,得到字符串
result + str(split_str[index]) #result是一個字符串,split_str[index] 是一個整數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章