Python编程总结(1)

Python总结
Python语言开发复习总结
第一章,字符串相关

一,查看在一段字符串中是否出现一个字符
a,str =input().split() #拆开成两个字符串,用空格隔开
str.strip() #除去多余的空格
if str.find(a) == -1: #直接用find方法
print(“false”)
else:
print(“true”)

二,活用字符串的内嵌方法:
用字符串的方法isupper, islower来判别大小写。isdigit来判断是否是数字。
三,保留小数点的写法:
一般写法:print("%.5f “%a)
专业写法:
如何做到保留两位小数?下面举例说明。
假如’以英里为单位的距离’用dist变量存储,那么下面的写法将做到保留两位小数,并且尾部附加了miles这个串。
print(”%.2f %s"%(dist, ‘miles’))

这里,"%.2f %s"是格式控制串,这与C语言的格式化输出是类似的。%.2f是指要在这个位置输出一个浮点数,
'.2’是指要保留(dist, ‘miles’)是指要保留两位小数。%s是指要在这个位置输出一个字符串。
整体效果是,拿dist的值填充到%.2f所占位置,拿’miles’填充到%s所占位置,而后输出。
假如’无线电往返小时数’用time变量存储,那么下面的写法将达成【样例输出】中的最后一行输出的效果。
print("%s %.2f %s"%(“time:”, time, ‘hours’))

这里,"%s %.2f %s"是格式控制串,这与C语言的格式化输出是类似的。
整体效果是,拿"time:“填充到第一个%s所占的位置,拿time的值填充到%.2f所占的位置,
拿’hours’填充到第二个%s所占的位置,而后输出。
如何让time:之后有一个空格,在格式控制串中的第一个%s所占的位置之后留一个空格即可。
效果如图:
print(”%.2f %s"%(dist, ‘miles’))

四,格式函数,格式化
(1)Format函数的格式化功能:

(2)Format函数对输出的字符的控制:

(3)转义字符的使用
Please write letter ‘A’. 
The path is “D:\study\computer”.
print("Please write letter ‘A’. ")
print(‘The path is “D:\study\computer\”.’)
在输出的时候:要输出”加\ 输出\加\

(4)输出格式的控制:
1,,print(n, str(height) + ‘m’)

第二章,
(1)求平方根和平方的方法总结
1,Import math
Math.Pow(数字,平方数)
Math.sqrt(数字)开平方,
2,直接用表达式
122=144
144
0.5=12.0

(2)在一定数内进行循环
1+2+4+8+…+2**64
for gezi in range(64):
maili_sum += 2 ** gezi

(2)竖着输入横着输入对数据的处理
#一整条输入,ss =line.split()
这个时候的ss已经是个一个列表了,可以直接使用方法
s1 = input()
s2 = input()
s3 = input()
ss = [s1, s2, s3]
分开一行行输入

对不确定的若干行的处理:
n=int(input())
stu_list = []
for i in range(n):
stu = input().split()
stu[0] = int(stu[0]) #学号
stu[2] = int(stu[2]) #年龄

stu_list.append(stu)

例题:
n = int(input()) #输入学生人数

#输入学生名单
stu_list = []
for i in range(n):
stu = input().split()
stu[0] = int(stu[0]) #学号
stu[2] = int(stu[2]) #年龄

stu_list.append(stu)

print(stu_list)

stu_list.sort(key = lambda stu: stu[1]) #按姓名排序
for stu in stu_list:
print("%3d%6s%3d" % (stu[0], stu[1], stu[2]))
print(’’)

stu_list.sort(key = lambda stu: stu[2])
for stu in stu_list:
print("%3d%6s%3d" % (stu[0], stu[1], stu[2]))

(3)将列表输出为字符串的形式
print(" ".join(list2))

for i in range(len(str)):#循环长度与打印的数据有关
print(str[i], end=’ ');

print(’ '.join(list(map(str, num_list))))

(4)
判断的数列中包含符号,或者其他字符
For i in a:
If i == ’-’

(5)字母大小写转换

1,swapcase方法 ,大写变成小写,小写转化为小写,并且返回新的字符串

2,Upper方法,把小写字母变成大写字母
3,Lower 大写转为小写
4,Title,把每一个单词的首字母大写

6)求一串数字中的最大值和最小值
将需要对比的数字输入到一串列表中,用max和min 的方法直接输出
For i in range(n):
K1=i
K2=n-i
A=k1*k2
Li.append(a)
Print(max(li))

7)活用map

8)字典
常规用法;
(1)num=int(input())
sum={}
for i in range(num):
key,value=input().spilit 一行行输入,一行添加到字典sum内,并用sum[key]=value定义字典的键值对。
sum[key]=value
print( sum.get(input(),‘notfound’) get的用法就是,直接将输入的值,放进去进行寻找,不存在就输出notfound

(2)
利用字典的值可变,键key不变储存一次次的增加,并排序
在标准输出上输出出现次数最多的整数及其出现次数,两者以一个空格分隔;若出现次数最多的整数有多个,则按照整数升序分行输出。
【样例输入】
10
0 -50 0 632 5813 -50 9 -50 0 632

line=input()
str_list={}
for s in line:
str_list[s]=line.count(s) #省去了一步步相加的步骤,例如直接将a在line出现的次数用line.count写了出来,并把他赋值给对应的key的值
max_count=max(str_list.values())
for s in sorted(str_list.keys()) 这个方法是用for,一个个遍历字典的key出来,根据特意要按照key值的大小输出,所以在for遍历就进行排序
if str_list[s]=max_count:
print(s,max_count)

因为只是输出几个特定的最值,所以直接在已排好的数列中,找出对应的最值

(3)输出,每一个都要输出
输出有多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。
【样例输入】
12
5 2 3 3 1 3 4 2 5 2 3 5
【样例输出】
3 4
2 3
5 3
1 1
4 1

n_list.append(n)

n_list = [int(s) for s in input().split()]

n = int(input())
#统计各个数字的出现次数
dict_n_cnt = {}
for n in n_list:
dict_n_cnt[n]=n_list.count(n)

list_n_cnt = list(dict_n_cnt.items())

print(“排序前:”, list_n_cnt)

list_n_cnt.sort(key=lambda x: x[0])

print(“数字从小到大:”, list_n_cnt)

list_n_cnt.sort(key=lambda x: x[1], reverse=True)

print(“次数从多到少:”, list_n_cnt)

for key,value in list_n_cnt:
print(key, value)

多个数值,输入n个学生的成绩,按总分从大到小输出。
按总分从大到小排序。若总分相同,则按学号从小到大排序。
【样例输入】
5
355 dj 60 70
665  kk 70 80
g33 He 55 95

【样例输出】
665 kk 150
g33 He 150

n = int(input())
xs_list = []
for i in range(n):
xs = input().split()
xs[2] = int(xs[2])
xs[3] = int(xs[3])
xs_list.append(xs)

xs_list.sort(key=lambda xs: xs[0])
xs_list.sort(key = lambda xs: xs[2] + xs[3], reverse = True)

for xs in xs_list:
print(xs[0], xs[1], xs[2] + xs[3])

循环:
【问题描述】输入两个正整数a和b(0 【输入文件】从标准输入读取一行,是两个整数a和b,以空格分隔。
【输出文件】向标准输出打印以空格分隔的两个整数,分别是a、b的最大公约数和最小公倍数。
【输入样例】12 18
【输出样例】6 36
【样例说明】12和18的最大公约数是6,最小公倍数是36.
a, b = map(int, input().split())
gdc_max = 0
for i in range(a + 1, 0, -1):
if a % i == 0 and b % i == 0:
gdc_max = i
break
print(gdc_max, int((a * b) / gdc_max))

=倒序:if x==x[::-1]

Tips:字符串的切分:
按照空格切分普通的操作: n=input().split
切成主要前面的一个字符,后面的不分割:n = input().split(’ ', 1) 字符串(3,vss,dd)
会变成 [‘3’,‘vss dd’]

拓展如果要取出字母部分print(n[1])
for i in n[1]:遍历出每一个字母 vssdd

将输入的字符串每一个变成数列和int类型
num_list = list(map(int, input().split()))
num_list = int(map(int, input().split()))

key max count 计数方法
print(max(num_list, key=num_list.count))

排序问题:
print(’ '.join(map(str,sorted((x1, x2), reverse=True))))

关于字母的加和
利用ASCII码
关于越界的问题
使用求余

round 方法 求余数

判读两个数组是否包含相同的字符
使用set集合(是一个无序不重复的元素集)可以消除重复的元素

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
print (“我叫 %s 今年 %d 岁!” % (‘小明’, 10))
以上实例输出结果:

我叫 小明 今年 10 岁!

列表的元素可以变
元祖列表不能变
将列表转换为元祖
tuple(seq)
将列表转换为元组。

list1= [‘Google’, ‘Taobao’, ‘Runoob’, ‘Baidu’]
tuple1=tuple(list1)
tuple1
(‘Google’, ‘Taobao’, ‘Runoob’, ‘Baidu’)

元祖可以直接访问最大的值
只定义第一个数的元祖,应该设置后面加上逗号tup1 = (50,)

forma函数
格式化工具
3.1415926 {:.2f} 3.14 保留小数点后两位
3.1415926 {:+.2f} +3.14 带符号保留小数点后两位
-1 {:+.2f} -1.00 带符号保留小数点后两位
2.71828 {:.0f} 3 不带小数
5 {:0>2d} 05 数字补零 (填充左边, 宽度为2)
5 {:x<4d} 5xxx 数字补x (填充右边, 宽度为4)
10 {:x<4d} 10xx 数字补x (填充右边, 宽度为4)
1000000 {:,} 1,000,000 以逗号分隔的数字格式 #
0.25 {:.2%} 25.00% 百分比格式
1000000000 {:.2e} 1.00e+09 指数记法
13 {:10d} 13 右对齐 (默认, 宽度为10)
13 {:<10d} 13 左对齐 (宽度为10)
13 {:^10d} 13 中间对齐 (宽度为10)
11
‘{:b}’.format(11)
‘{:d}’.format(11)
‘{?}’.format(11)
‘{:x}’.format(11)
‘{:#x}’.format(11)
‘{:#X}’.format(11)
1011
11
13
b
0xb
0XB 进制

list
[1,2,3]可以使用sum,方法直接求和
[‘1’.‘2’,‘3’]不可以使用sum list只能由int类型

你可能感兴趣的:(Python编程总结(1))