用户输入一个十进制正整数数字
- 判断是几位数
- 打印每一位数字及其重复的次数
- 依次打印每一位数字,顺序个、十、百、千、万…位
strnum = input("please input a number:")
purenum =strnum.strip().lstrip("0")
print(pureNum, len(pureNum))
解析:
strip()
用于移除字符串头尾指定的字符(默认为空格)或字符序列。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
语法:str.strip([chars])
参数:chars – 移除字符串头尾指定的字符序列
例:
a="aabdab1234acdaba"
print(a.strip("abcd"))
print(a.strip("acbd"))
print(a.strip("dbac"))
输出:
1111
1111
1111
删除指定的的字符不管输入的顺序,只要出现了都将其删除
lstrip()
用于移除字符串**“头”**指定的字符(默认为空格)或字符序列。
rstrip()
用于移除字符串“尾”指定的字符(默认为空格)或字符序列。
len()
Len():得到字符串的长度
语法: Len (string)
参数string:string类型变量返回值Long。函数执行成功时返回字符串的长度,发生错误时返回-1。如果任何参数的值为NULL,则Len()函数返回NULL。
第二问:打印每一位数字及其重复的次数
倒序打印1
for i in range(len(num), 0, -1):
print(num[i-1], end=' ')
print()
倒序打印2
for i in reversed(num):
print(i, end=' ')
print()
倒序打印3 负索引
for i in range(len(num)):
print(num[-i-1], end=' ')
print()
for i in range(-1, -len(num)-1, -1):
print(num[i], end=' ')
print()
print('-' * 30)
print(num[::-1])
判断0-9的数字在字符串中出现的次数
1 每一次迭代都是用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]))
2 使用count,迭代字符串本身
counter = [0] * 10
unique(n) * n
1111 时间复杂度就是O(n)
1234 时间复杂度就是O(4n)
for x in num:
i = int(x)
if counter[i] == 0:
counter[i] = num.count(x)
print("The count of {} is {}".format(i, counter[i]))
3 迭代自身每一个字符
for x in num: # O(n)
i = int(x)
counter[i] += 1
for i in range(len(counter)):
if counter[i]:
print("The count of {} is {}".format(i, counter[i]))