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:\Users\dell>py -3 C:\Users\dell\Desktop\练习\5\0508.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:\Users\dell>py -3 C:\Users\dell\Desktop\练习\5\0508.py
{'T': 3, 'L': 1, 'D': 2}

猜你喜欢

转载自www.cnblogs.com/wenm1128/p/10833551.html