zoukankan      html  css  js  c++  java
  • 0508---字符串练习题

    #1、将一个正整数分解质因数
    #质因数就是能够被该正整数整除的数(除1和本身),先找出质数,在找出因数即为质因数
    #算法:对正整数n分解质因数,应先找到一个最小的质数i:
    #1 如果这个质数恰好等于n,则说明分解质因数的过程已经结束。直接打印i
    #2 如果n!=i,但能被i整除,则应打印出i的值,并用n除以i的商作为新的正整数n,重复执行第一步。
    #3.如果n不能被i整除,则用i+1作为i的值,重复执行第一步。

    def prime(n):
        print('{}='.format(n))#字符串格式化
        if not isinstance(n,int) or n<=0:
            print('请输入正整数!')
        elif n=='1':
            print('{}'.format(n))
        while n not in [1]:
            for i in range(2,int(n)+1):
                if n%i ==0:
                    n /=i
                    if n==1:
                        print(i)
                    else:
                        print('{}*'.format(i),end="")
                break
    print(prime(90))

    #2、一个字符串中,分别输出奇数坐标字符或偶数坐标字符,奇数坐标的一行,偶数坐标的一行

    s="For the hope of tomorrow, let us forget today's pain."
    result1=""
    result2=""
    for i in range(len(s)):
        if i%2==0:
            result1 +=s[i]
        else:
            result2 +=s[i]
    print(result1)
    print(result2)

    #3、统计字符串中的字母、数字、其他字符个数

    s="word123#@"
    import string
    word_num=0
    digit_num=0
    other_num=0
    for i in s:
        if i in string.ascii_lowercase:
            word_num +=1
        elif i.isdigit():
            digit_num +=1
        else:
            other_num +=1
    
    print("字母个数 %s" %word_num)
    print("数字个数 %s" %digit_num)
    print("其他字符个数 %s" %other_num)


    #4、有一个已经排好序的列表。现输入一个数,要求按原来的规律将它插入列表中
    #算法:1 先判断这个列表的排序顺序是升序还是降序
    2 升序-->1小于列表的第一个值,2在中间 ,3大于列表的最后一个值

    def insert_num_in_list(s,num):
        result =[]
        #用首尾元素判断列表是升序还是降序
        if s[0]<s[-1]:
            for i in range(len(s)):
                #场景1
                if i ==0 and num<s[i]:
                    result.append(num)
                    result.append(s[i])
                #场景2,elif条件也有先后执行顺序len(s)-1>i要放在前面,保证如果i=len(s)时s[i+1]不会超出range导致越界
                #此处需要写作开区间,否则会在特定情况执行两次,如2,3,3的序列中插入3,如果写作num>=s[i] and num <=s[i+1]的情况,则该条件会执行两次
                elif len(s)-1>i and num>=s[i] and num<s[i+1]:
                    result.append(s[i])
                    result.append(num)
                #场景3
                elif i ==len(s)-1 and num>=s[i]:
                    result.append(s[i])
                    result.append(num)
                else:
                    result.append(s[i])
        else:
            for i in range(len(s)):
                if i ==0 and num>s[i]:
                    result.append(num)
                    result.append(s[i])
                elif len(s)-1>i and  num<=s[i] and num>s[i+1]:
                    result.append(s[i])
                    result.append(num)
                elif i ==len(s)-1 and num<=s[i]:
                    result.append(s[i])
                    result.append(num)
                else:
                    result.append(s[i]) 
        return result
    
    s=[1,1,3,4,4,6,9,9]
    print(insert_num_in_list(s,4))
    print(insert_num_in_list(s,2))
    print(insert_num_in_list(s,9))
    print(insert_num_in_list(s,0))
    s1=[12,8,6,5,4,3,2,1,0,0]
    print(insert_num_in_list(s1,15))
    print(insert_num_in_list(s1,12))
    print(insert_num_in_list(s1,9))
    print(insert_num_in_list(s1,0))

     C:Usersdell>py -3 C:UsersdellDesktop练习5508.py
    [1, 1, 3, 4, 4, 4, 6, 9, 9]
    [1, 1, 2, 3, 4, 4, 6, 9, 9]
    [1, 1, 3, 4, 4, 6, 9, 9, 9]
    [0, 1, 1, 3, 4, 4, 6, 9, 9]
    [15, 12, 8, 6, 5, 4, 3, 2, 1, 0, 0]
    [12, 12, 8, 6, 5, 4, 3, 2, 1, 0, 0]
    [12, 9, 8, 6, 5, 4, 3, 2, 1, 0, 0]
    [12, 8, 6, 5, 4, 3, 2, 1, 0, 0, 0]

    #5、统计名字列表中,各名字的首字母在名字列表中出现的次数

    s=['Tom','Tony','Tim','Lily','Damon','Davi']
    d={}
    for i in range(len(s)):
        #print(s[i][0])
        if s[i][0] in d.keys():
            d[s[i][0]] +=1
        else:
            d[s[i][0]] =1
    
    print(d)

    C:Usersdell>py -3 C:UsersdellDesktop练习5508.py
    {'T': 3, 'L': 1, 'D': 2}

  • 相关阅读:
    ubuntu下进程kidle_inject致使编译软件很慢
    linux下保存下位机输出的串口信息为文件
    ubuntu下转换flv格式为mp4格式
    ubuntu下安装mkfs.jffs工具
    linux下安装evernote国际版
    linux 下使用命令查看jvm信息
    linux下面实时查看进程,内存以及cpu使用情况使用命令
    Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析
    linux如何复制文件夹和移动文件夹
    linux解压war包的命令
  • 原文地址:https://www.cnblogs.com/wenm1128/p/10833551.html
Copyright © 2011-2022 走看看