Python-小语法测试1

67 阅读4分钟
import logging

logger = logging.getLogger(__name__)


def strConvertList(str):
    logger.info("logger-info-strConvertList str : %s ", str)
    return str.split("_")


def listConvertStr(str_to_list):
    return "_".join(str_to_list)


def replaceStr():
    return "user_name_age_sex".replace("_", "%")


def printMultiplication():
    for x in range(1, 10):
        for y in range(1, x + 1):
            print("{}x{}={}\t".format(x, y, x * y), end="")
        print()


"""从下标 0 开始索引,找出单词 “welcome” 在字符串“Hello, welcome to my world.” 
中出现的位置,找不到返回 -1。"""


def getStrIndexWhere(source_str, target_str):
    find_right_str = target_str.rfind(source_str, 0, len(target_str))
    find_str = target_str.rindex(source_str, 0, len(target_str))
    return find_right_str or find_str


def getStrIndexFirstAndLast(source_str, target_str):
    index_str = target_str.index(source_str)
    last_str = index_str + len(source_str) - 1
    return str(index_str) + ',' + str(last_str)


def countExistsStrNum(find_str, source_str):
    return source_str.count(find_str, 0, len(source_str))


def countExistsStrNum2(find_str, source_str):
    num = 0
    for x in source_str:
        if find_str == x:
            num += 1
    return num


def statisticsStrOutputNum(find_str, source_str):
    count_str_dic = {}
    for x in source_str:
        if count_str_dic.get(x) is None:
            count_str_dic[x] = 1
        else:
            count_str_dic[x] = count_str_dic.get(x) + 1
    print(count_str_dic)
    return count_str_dic.get(find_str)


def _is_contain_target_str(find_str, source_str):
    # find_str_result = source_str.find(find_str, 0, len(source_str))
    # print(find_str_result)
    # count_str_result = source_str.count(find_str)
    # print(count_str_result)
    if find_str in source_str:
        return True
    else:
        return False


def _find_str_count_num(index, num, source_str):
    list_str = []
    for x in source_str:
        count_num = source_str.count(x, 0, len(source_str))
        if count_num == num:
            list_str.append(x)
    return list_str[index - 1]


def _find_str_first_index(find_str, source_str):
    return source_str.find(find_str)


def _flag_num_is_odd_number_or_even_number(num):
    is_odd_number, is_even_number = '奇数', '偶数'
    if num % 2 == 0:
        return is_even_number
    else:
        return is_odd_number


def _flag_str_is_number(str):
    return str.isnumeric()


def _str_is_convert(str1, str2):
    list = []
    list.append(str1.upper())
    list.append(str2.lower())
    return list


def _str_is_strip(str):
    return str.strip()


def _str_is_while_trim(str):
    while (True):
        flag = 0
        if str[:1] == ' ':
            str = str[1:]
            flag = 1
        if str[-1:] == ' ':
            str = str[:-1]
            flag = 1
        if flag == 0:
            break
    return str


def _str_is_digui_trim(str):
    flag = 0
    if str[:1] == ' ':
        str = str[1:]
        flag = 1
    if str[-1:] == ' ':
        str = str[:-1]
        flag = 1
    if flag == 1:
        return _str_is_digui_trim(str)
    else:
        return str


def _str_is_distinct_and_sort(str1):
    list_str = []
    for x in str1:
        if x not in list_str:
            list_str.append(x)
    print(list_str)
    list_str.sort()
    print(list_str)
    # return "".join(str(y) for y in list_str)
    return "".join(list_str)


def _str_is_print_lingxing(num):
    for x in range(-int(num / 2), int(num / 2) + 1):
        if num - abs(x) * 2 == 0:
            print(" " * abs(x), "*" * 1)
        else:
            print(" " * abs(x), "*" * (num - abs(x) * 2))


def _str_digit_reverse_order(num):
    print("数据长度 : ", len(str(num)))
    return str(num)[::-1]


def _str_is_shui_xian_hua_num(num):
    if type(num) != int:
        return '违法参数'
    if int(num) <= 0:
        return '违法参数'
    result_num = []
    for x in range(num, 0, -1):
        digit_num = []
        temp_num = x
        while len(digit_num) < len(str(x)):
            y = temp_num % 10
            digit_num.append(y)
            if len(digit_num) >= len(str(x)):
                break
            else:
                temp_num = int(str(x)[:len(str(x)) - len(digit_num)])
        add_num = 0
        for z in digit_num:
            add_num += z ** 3
        if x == add_num:
            result_num.append(x)
    return result_num


def _str_is_shui_xian_hua_num1(num1, num2):
    list_str = []
    for x in range(num1, num2):
        i = x // 100
        j = x // 10 % 10
        k = x % 10
        if i ** 3 + j ** 3 + k ** 3 == x:
            list_str.append(x)
    return list_str

def _str_is_add_num(num):
    add_num = 0
    for x in range(0, num + 1):
        add_num += x
    return add_num

def _str_is_add_num2(num):
    add_num = 0
    for x in range(0, num + 1):
        add_num += x
    return add_num

if __name__ == '__main__':
    str_to_list = strConvertList('user_name_age_sex')
    print(f'strConvertList : {str_to_list}')
    list_to_str = listConvertStr(str_to_list)
    print(f'listConvertStr : {list_to_str}')
    replace_str = replaceStr()
    print(f'replaceStr : {replace_str}')
    printMultiplication()
    str_index_where = getStrIndexWhere('welcome', 'Hello, welcome to my world.')
    print(f'str_index_where : {str_index_where}')
    first_last_index = getStrIndexFirstAndLast('welcome', 'Hello, welcome to my world.')
    print(f'first_last_index : {first_last_index}')
    str_count = countExistsStrNum('o', 'Hello, welcome to my world.')
    print(f'str_count : {str_count}')
    str_count2 = countExistsStrNum2('o', 'Hello, welcome to my world.')
    print(f'str_count2 : {str_count2}')
    str_output_count = statisticsStrOutputNum(' ', 'Hello, welcome to my world.')
    print(f'str_output_count : {str_output_count}')
    is_contain_target_str = _is_contain_target_str('come1', 'Hello, welcome to my world.')
    print(f'is_contain_target_str : {is_contain_target_str}')
    _find_str_count_num = _find_str_count_num(1, 2, 'Hello, welcome to my world.')
    print(f'find_str_count_num : {_find_str_count_num}')
    find_str_first_index = _find_str_first_index('ooo', 'Hello, welcome to my world.')
    print(f'find_str_first_index : {find_str_first_index}')
    flag_num_is_qishu_or_oushu = _flag_num_is_odd_number_or_even_number(-5)
    print(f'flag_num_is_qishu_or_oushu : {flag_num_is_qishu_or_oushu}')
    flag_str_is_number = _flag_str_is_number('34345')
    print(f'flag_str_is_number : {flag_str_is_number}')
    str_is_convert = _str_is_convert('This is string example….wow!', 'Welcome To My World')
    print(f'str_is_convert : {str(str_is_convert)}')
    str_is_while_trim = _str_is_while_trim('      Welcome To My World     ')
    print(f'str_is_while_trim : {str_is_while_trim}')
    str_is_digui_trim = _str_is_digui_trim('      Welcome To My World     ')
    print(f'str_is_digui_trim : {str_is_digui_trim}')
    str_is_distinct_and_sort = _str_is_distinct_and_sort('sdcvsazaaapp')
    print(f'str_is_distinct_and_sort : {str_is_distinct_and_sort}')
    str_is_print_lingxing = _str_is_print_lingxing(8)
    print(f'str_is_print_lingxing : {str_is_print_lingxing}')
    str_digit_reverse_order = _str_digit_reverse_order(45667)
    print(f'str_digit_reverse_order : {str_digit_reverse_order}')
    str_is_shui_xian_hua_num = _str_is_shui_xian_hua_num(10000)
    print(f'str_is_shui_xian_hua_num : {str_is_shui_xian_hua_num}')
    str_is_shui_xian_hua_num1 = _str_is_shui_xian_hua_num1(1,1000)
    print(f'str_is_shui_xian_hua_num1 : {str_is_shui_xian_hua_num1}')
    str_is_add_num = _str_is_add_num(100)
    print(f'str_is_add_num : {str_is_add_num}')
    print(2 * (-2) ** 2)