python字符串练习

1.用户输入1个数字,判断几位数,打印每一位数字及其重复次数,依次打印每一位数字,顺序个、十、百、千…

a = input(">>>")
print("%d位数" % len(a))
d = {}
for j in range(len(a)):
    if a[j] not in d:
        d[a[j]] = 1
    else:
        d[a[j]] += 1
print(d)
for i in a[::-1]:    #倒叙打印
print(i)
#print(i,end = " ")   #打印成1行
a = input(">>>")
print("%d位数" % len(a))
for i in range(1,len(a)+1):   #n
    time = a.count(a[-i])   #n
print(a[-i],time)   #倒着打印,次数
a = input(">>>")
print("%d位数" % len(a))
lst = [0] * 10  #0-9共10个数,用这10个数字做索引
for i in range(1,len(a)+1):   #112233
print(a[-i], end = " ")   #3  倒叙打印
lst[int(a[-i])] += 1     #lst[3] += 1
print()
for j in range(10):
if lst[j]:
    print(“{}:{:3}”.format(j,lst[j]))

输出结果
>>>328722838732
12位数
{‘3’: 3, ‘2’: 4, ‘8’: 3, ‘7’: 2}
2 3 7 8 3 8 2 2 7 8 2 3

val = input(">>>")
print("{}长度为{}".format(val,len(val)))
title = ("个","十","百","千","万","十万","百万","千万")
for i in range(len(val)):
print("{:>2}: {}  number={}".format(title[i],val[len(val)-1-i],val.count(val[len(val)-1-i])))

输出结果
>>>65647
65647长度为5
个: 7 number=1
十: 4 number=1
百: 6 number=2
千: 5 number=1
万: 6 number=2

2.用户输入一个数字,判断几位数.打印每一位数字及其重复的次数,依次打印出每一位数字,顺序:个、十、百、千、万…位

num=''
#数字输入的简单判断
while True:
    num=input('Input a positive number>>>').strip().lstrip('0')
    if num.isdigit():
        break
print("the length of {} is {}.".format(num,len(num)))

判断0-9的数字再字符串中出现的数字,每一次迭代都是使用count,都属于O(n)复杂度

counter=[0]*10
for i in range(10): #10*n
    counter[i]= num.count(str(i))
    if counter[i]:
        print("the count of {} is {}".format(i,counter[i]))
print('~'*20)
#迭代字符串本身的字符
counter=[0]*10      #创建数值为10个0的列表
for x in num:       # 依次读取num里的数 112223
    i=int(x)        # 将x的值转为字符串并赋给i  1   2
    if counter[i]==0:   #如果counter的第i项为0;  0  0
        counter[i]=num.count(x) #那么第i项就等于该数的次数  count[1]=2
        print("the count of {} is {}.".format(x,counter[i]))
print('~'*20)
#迭代字符串本身的字符
counter=[0]*10
for x in num:
    i = int(x)
    counter[i]+=1   #再counter的第i个索引处补1
for i in range(len(counter)):   #迭代出counter的长度的数
    if counter[i]:        #如果counter不为真,则继续执行下面的命令
        print("the count of {} is {}.".format(i,counter[i]))

3.输入5个数字,打印每个数字的位数,将这些数字升序打印

nums=[]     #创建一个空列表
while len(nums)< 5:  #  循环
    num=input("please input a number:").strip().lstrip('0')
    if not num.isdigit():       #如果他不是数字,则不会执行下面的命令
        break               #如果他是数字,则继续下面的命令
    print('the length of {} is {}'.format(num,len(num)))#打印出这个数和他的位度
    nums.append(int(num))   #并将num转为整型并追加到nums中
#最后打印出nums列表
lst=nums.copy() #将nums列表的值复制给lst中
lst.sort()  #就地排序
print(lst)
#使用冒泡法进行排序
for i in range(len(nums)):
    flag=False
    for j in range(len(nums)-i-1):
        if nums[j]>nums[j+1]:
            tmp=nums[j]
            nums[j]=nums[j+1]
            nums[j+1]=tmp
            flag = True
        if not flag:
            break
print(nums)

输出结果
please input a number:73627
the length of 73627 is 5
please input a number:272726
the length of 272726 is 6
please input a number:222
the length of 222 is 3
please input a number:2222
the length of 2222 is 4
please input a number:11
the length of 11 is 2
please input a number:122
the length of 122 is 3
[11, 122, 222, 2222, 73627, 272726]

lst = [0] * 5
for i in range(1,6):
    val = input("请输入一个数字:")
    lst[i-1] = val
    print("长度为{}".format(len(val)))
print(sorted(lst,key=int))

输出结果
== 请输入一个数字:11111
长度为5
请输入一个数字:132
长度为3
请输入一个数字:14
长度为2
请输入一个数字:23
长度为2
请输入一个数字:9
长度为1
[9, 14, 23, 132, 11111] ==

a = [0] * 5
for i in range(5):
    a[i] = input("请输入一个数字:")
    print("长度为{}".format(len(a[i])))
    a[i] = int(a[i])   #转化为int类型,否则作为字符串类型排序会出问题,11111,132,14,23,9
#sort排序
lst1 = a.copy() #将nums列表的值复制给lst中
lst1.sort()  #就地排序
print(lst1)
#冒泡法排序
for i in range(len(a)-1):  
    flag = False
    for j in range(len(a)-i-1):
        if a[j] > a[j+1]:
            a[j],a[j+1]=a[j+1],a[j]
            flag = True
    if not flag:
        break
print(a)

输出结果
请输入一个数字:11111
长度为5
请输入一个数字:132
长度为3
请输入一个数字:14
长度为2
请输入一个数字:23
长度为2
请输入一个数字:9
长度为1
[9, 14, 23, 132, 11111]
[9, 14, 23, 132, 11111]

你可能感兴趣的:(python代码,python基础语法)