使你痛苦者,必使你强大!
Jupyter notebook 使用
Python·Jupyter Notebook各种使用方法记录·持续更新
https://blog.csdn.net/tina_ttl/article/details/51031113
Jupyter Notebook的27个窍门,技巧和快捷键
https://www.weixin765.com/doc/kbrtriqf.html
{}位数!'.format(n))
1. 函数与方法优缺点:
+ #字符串拼接不推荐使用,拼接会出现一个新的字符串;format不会出现一个新str;
reversed() #不推荐使用,
range() #正反没有差异,无非就是+1的问题;
count() #count() 是O(n),一定是遍历完才知道结果;
sort() #就地排序
sorted() #生成一个新的列表;
类型转换函数:(#强制类型转换浪费时间;不推荐遍历('_','+')方法O(n);)
list()
int()
str()
习题1. 用户输入一个数字:判断是几位数;打印每一位数字及其重要的次数;打印每一位数字,顺序个、十、百、千、万...;
# 方法1:不适用list,字典、str索引的方式,
a=(input('请输入一个数字:'))
n=len(a)
# 打印几位数
print('这是一个{}'.format(n))
# 打印每一位数字及其重复的次数;
c=0
b=int(a)
for i in range(1,n+1):
c=b%10 #余数
b=b//10 #整数
print(c)
print(a.count(str(c))) #count 函数里面有一层 for 循环;
if b>0:
continue
else:
break
#for循坏取值的效率比较低,取位数可以使用 list/str 的索引取数;reversed()方法;
#变量取名原则:按照意义取名,不要按照数据类型取名字;
#方法2:索引的使用
val=input('>>> ')
print('val='+val+' lenth='+str(len(val))) # 字符串拼接 生成一个新的list;
lst=list(reversed(val)) # reversed() 函数是O(n)问题;
title=('个','十','百','千','万','十万','百万')
for i in range(len(lst)):
print('{:>2}: {} num={}'.format(title[i],lst[i],lst.count(lst[i])))
---------------------------------------------
>>> 456789
val=456789 lenth=6
9 num=1
8 num=1
7 num=1
6 num=1
5 num=1
4 num=1
# 方法2 改进版:
val=input('>>> ')
print('val='+val+' lenth='+str(len(val))) # 字符串拼接 生成一个新的list;
for i in range(len(val)):
print('{} num={}'.format(val[len(val)-i-1],val.count(val[len(val)-i-1])))
--------------------------------------------------
>>> 456789
val=456789 lenth=6
9 num=1
8 num=1
7 num=1
6 num=1
5 num=1
4 num=1
# 方法3:字符串的索引新变化;
#索引的用法(索引本身是数字;本身就是key)
num=input(">>>")
length=len(num)
print("length:{}".format(length))
lst=[0]*10 #0
for i in range(1,length+1):
print(num[-i],end='')
lst[int(num[-i])]+=1 #字符串索引新变化;
print('')
for j in range(10):
if lst[j]:
print("{}?????:{:3}".format(j,lst[j]))
----------------------------------------------------
>>>455678
length:6
876554
4?????: 1
5?????: 2
6?????: 1
7?????: 1
8?????: 1
# 方法4:使用字符串方法,
num=''
#数字输入的简单判断;
while True:
num=input('Input a positive number >>> ').strip().lstrip('0') # 解决高位为0的情况;
if num.isdigit():
break
print("The length of {} is {}.".format(num,len(num)))
# 1 倒序打印
for i in range(len(num),0,-1): #range()正反序都无所谓;
print(num[i-1],end=' ')
print()
# 2 倒序打印
# 要的时候反着拿一个;推荐使用这种方法;( Python的惰性 )
for i in reversed(num):
print(i,end=' ')
print()
# 3 负索引方式打印;
for i in range(len(num)):
print(num[-i-1],end=' ') #直接取负索引的方式;
print()
# 判断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
for x in num: #取本身出现的字符奇数(10n-n)
i=int(x)
if counter[i]==0:
counter[i]=num.count(x)
print("The count of {} is {}".format(x,counter[i]))
print('-'*20)
counter=[0]*10
for x in num: #取本身出现的字符奇数(10n-n)
i=int(x)
counter[i]+=1
for i in range(len(counter)):
if counter[i]:
print("The count of {} is {}".format(x,counter[i]))
-------------------------------------------------------------------------
Input a positive number >>> 546723
The length of 546723 is 6.
3 2 7 6 4 5
3 2 7 6 4 5
3 2 7 6 4 5
The count of 2 is 1
The count of 3 is 1
The count of 4 is 1
The count of 5 is 1
The count of 6 is 1
The count of 7 is 1
--------------------
The count of 5 is 1
The count of 4 is 1
The count of 6 is 1
The count of 7 is 1
The count of 2 is 1
The count of 3 is 1
--------------------
The count of 3 is 1
The count of 3 is 1
The count of 3 is 1
The count of 3 is 1
The count of 3 is 1
The count of 3 is 1
#强制类型转换浪费时间;不推荐遍历('_','+')方法O(n);
习题2. 输入5个数字,打印每个数字的位数吗,将这些数字升序打印;
# 方法1
nums=[]
while len(nums)<5:
num=input("Please input a number:").strip().lstrip('0')
if not num.isdigit():
continue
print('The length of {} is {}'.format(num,len(sum)))
nums.append(int(num))
print(nums)
# sort方法排序;
lst=nums.copy()
lst.copy() #就地修改
print(lst)
# 冒泡法;
for i in range(len(nums)):
flag=False
for j in range(len(nums)-i-1):
if nums[j]>nums[j+1]:
nums[j],nums[j+1]=nums[j+1],num[j]
flag=True
if not flag:
break
print(nums)
方法2:sorted排序;
lst=[0]*5
for i in range(1,6):
val=input('>>>')
lst[i-1]=val
print('length='+str(len(val)))
print(sorted(lst,key=int))
-------------------------------------
>>>1
length=1
>>>5
length=1
>>>6
length=1
>>>9
length=1
>>>8
length=1
['1', '5', '6', '8', '9']
总结:
1. 负索引的新玩法:lst[int(num[-i])]+=1
2. lst、字符串的方法更加的复杂,有趣,
网友评论