本次教程干货过多
format函数
format的功能是使任意数据转换成字符串。format函数的基本语法举例如下:
a=8
b=7.333
print("{:d} , {:.2f}".format(a,b))具体执行结果会在终端打印输出下述字符串: 8 , 7.33 其中, {:d} 表示将a输出为整数,d表示整数; {:.2f} 表示将b输出浮点数,保留两位小数,f表示浮点数; format(a,b) 是将a与b的值转换成字符串。 {}中可以不填值
format前面是点,不是逗号
字符串
字符串是一个任意Unicode字符序列,包括中文等。可以用三种定界符:单引号、双引号、三引号,但是字符串的首末都得用一样的定界符,如:″ABout″,′123′。三引号用于表示跨行的字符串,如程序的跨行注释。
要访问字符串中单独的某个字符,用这个字符在字符串中的位置(索引),即这个字符离首字符的偏移量,注意首字符的位置为0,运算采用方括号[],方括号中表达式即为索引,也称为下标。字符串的索引有两种方式:一种是从0开始,向右依次递增序号,另一种是从-1开始,向左依次递减序号,如图1所示。因此访问字符′A′的可用反向递减的索引方式:ft[-5]
如果要访问字符串中的一个子串,则可以采用区间访问的方式,也可称为分片操作:[M:N],其中M和N为字符串的索引号,表示从M到N(不包括N)的子串,可以采用混合的索引方式,即一个使用递增的索引顺序,另一个采用递减的索引顺序。如果缺省M或N,则分别默认为字符串的开始或结尾的索引号。例如:
>>> ft="Apple"
>>> ft
'Apple'
>>>
>>> ft="Apple"
>>> ft
'Apple'
>>> print(ft[-5:4])
Appl
>>> print(ft[:4])
Appl
>>> print(ft[3:])
le
>>> print(ft[::-1])
elppA左闭右开,右边的永远取不到
字符串是不可改变,意味着不能修改字符串中的元素。
字符串(str)是一个类,封装了一系列的方法来处理更为复杂的文本处理任务的函数,这些封装在类中的函数称为方法,所以说方法就是和特定对象相关联的函数。对于方法的调用方式是:a.b(),表示调用对象a的方法b()。例如:
>>> a="Apple"
>>> a
'Apple'
>>> s=a[1]
>>> s
'p'
>>> b=a.count('p') #统计"Apple"中p的个数
>>> b
2列表
列表是一个有序的序列,其中包括0或多个对象引用,支持序列类型共同的运算及函数表中序列共用的运算和函数。
但是不同于元组和字符串的是,列表的长度和内容都是可变的,可自由对列表中数据项进行增加、删除或替换。列表没有长度限制,元素类型可以不同。因此,列表的应用非常广泛。
列表常用的创建方法有几种:可以通过显式的数据赋值生成,元素之间用逗号分隔;可以使用 [ ] 生成空列表,然后利用相关方法(如append()、extend()、insert()等)往列表中添加元素;可以使用list()函数将元组或字符串转换成列表。例如:
>>> lt=[] #创建一个空列表
>>> lt.append('A') #调用append方法向lt中追加一个元素′A′
>>> lt
['A']
>>> lt.append('B')
>>> lt.append("Hello") #调用append方法向lt中追加一个元素′Hello′
>>> lt
['A', 'B', 'Hello']
>>> lk=["201701001","李明",401]
>>> lm=list("欢迎来到湘潭大学") #将字符串转换为列表//重点~
>>> print(lk,lm)
['201701001', '李明', 401] ['欢', '迎', '来', '到', '湘', '潭', '大', '学']
>>> ln=lm
>>> ln[2]="你"
>>> lm
['欢', '迎', '你', '到', '湘', '潭', '大', '学']
>>> ''.join(lm) #返回一个新列表,由lm的每一个元素组成,元素间用''分割
'欢迎来到湘潭大学'
>>> '0'.join(lm) #返回一个新列表,由lm的每一个元素组成,元素间用'0'分割
'欢0迎0来0到0湘0潭0大0学'其中,’’.join(lm)和’0’.join(lm)参照str.join(interable)的用法,这里’’和’0’是str,lm是interable。
由此可见,简单将一个列表赋值给另一个列表不会生成新的列表对象。
如下图所示,将lm赋值给ln,仅能产生对列表lm的一个新的引用,lm和ln都是引用的同一个列表,因此对ln的修改同时也修改了lm。
和字符串一样,可以利用正向和反向索引
由于列表是可变的,有关列表的操作除了表1中的共用的函数和运算外,下表列出了列表类型的一些常用方法与函数。
序列型数据不同类型之间的转换
下表为序列类型间的转换函数:
| 内置函数 | 描述 |
|---|---|
| str(x) | 将x转换成字符串类型,x可以是数字类型、字符串、元组、列表及字典等各种类型的对象 |
| tuple(x) | 将x转换成元组,x可以是字符串、元组、列表及字典等各种可迭代类型和映射类型的对象 |
| list(x) | 将x转换成列表,x可以是字符串、元组、列表及字典等各种可迭代类型和映射类型的对象 |
| dict(x) | 将x转换成字典,x可以是字符串、元组、列表及字典等各种可迭代类型和映射类型的对象 |
重点!
回文数python代码
data=input()
l=list(data)
l.reverse()#反转
t=''.join()#以空格分隔返回新字符串
if t==data:
print("{}是回文数".format(data))
else:
print("{}不是回文数".format(data))if-else 条件控制结构
Python语言中,分支结构的使用if语句实现,其一般的形式如下:
if <条件1>:
<语句块1>
elif <条件2>:
<语句块2>
elif <条件3>:
<语句块3>:
else:
<语句块n>当if语句执行时,首先会测试<条件1>,如果结果为True,则执行<语句块1>, <条件1>为False,则会测试<条件2>,依此类推, Python会执行第一个测试结果为True的<语句块>,如果所有的<条件>均为False,则执行else后的<语句块n>。
map 函数
map() 会根据提供的函数对指定序列做映射。
map(function, iterable, ...)第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
例如:
map(square, [1,2,3,4,5]) # 计算列表各个元素的平方会产生结果值[1, 4, 9, 16, 25]
字符串的split函数
string.split(str="", num=string.count(str))以str为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串,默认是以空格符为分隔符。
Python中enumerate用法详解
enumerate()是python的内置函数、适用于python2.x和python3.x enumerate在字典上是枚举、列举的意思 enumerate参数为可遍历/可迭代的对象(如列表、字符串) enumerate多用于在for循环中得到计数,利用它可以同时获得索引和值,即需要index和value值的时候可以使用enumerate enumerate()返回的是一个enumerate对象
>>> lst = [1,2,3,4,5,6]
>>> for index,value in enumerate(lst):
print ('%s,%s' % (index,value))
0,1
1,2
2,3
3,4
4,5
5,6简单来说 enumerate函数可以返回列表的索引和值
#指定索引从1开始
>>> lst = [1,2,3,4,5,6]
>>> for index,value in enumerate(lst,1):
print ('%s,%s' % (index,value))
1,1
2,2
3,3
4,4
5,5
6,6
#指定索引从3开始
>>> for index,value in enumerate(lst,3):
print ('%s,%s' % (index,value))
3,1
4,2
5,3
6,4
7,5
8,6几个比较有意思的题目
任务描述
本关任务:编写一个石头、剪刀、布游戏类的小程序。
为了完成本关任务,你需要掌握:1. Python的循环结构,2. python中的 list列表结构。
循环结构
for循环在 Python中是一个通用的迭代器,可以遍历任何有序的序列对象内的元素。 for语句可用于字符串、列表、元组、文件等可迭代对象。 for循环格式如下:
for <循环变量> in <遍历结构>: <语句块1>else: <语句块2>在 for循环,内置函数 range()产生序列,可以来控制循环结构。
range(start, stop, [step])
start: 计数从start开始。默认是从0开始。例如range(5)等价于range(0, 5)stop: 计数到stop结束,但不包括stop。例如:range(0, 5)是[0, 1, 2, 3, 4]没有5step:步长,默认为1。例如:range(0, 5)等价于range(0, 5, 1)
列表 list
list是一个有序的序列,其中包括 0或多个对象引用, list中肯定也支持存放 list作为存储元素。
>>> lt=[] #创建一个空列表>>> lt.append('A')#调用append方法向lt中追加一个元素′A′>>> lt['A']编程要求
编写传统的石头、剪刀、布的游戏程序,单局胜负规则是,剪刀胜布,布胜石头,石头胜剪刀。用户玩家和计算机对阵,采用 7局 4胜制。为了简单便于判定,计算机的选择方式是固定的,并不是随机的选择序列,最后输出胜负或平局信息。
例如: 输入: 石头,剪刀,剪刀,布,布,石头,石头,则输出: 电脑赢!; 输入: 剪刀,布,剪刀,石头,布,剪刀,石头,则输出: 电脑赢!; 输入: 布,石头,石头,布,剪刀,石头,剪刀,则输出: 玩家赢! 。
测试说明
我会对你编写的代码进行测试:
测试输入: 石头,剪刀,剪刀,布,布,石头,石头 预期输出: 电脑赢!
代码:
# -*- coding:utf-8 -*-
import random
people_guess = [ x for x in map( str, input("").split(",") ) ]
guess_list = ["石头","剪刀","剪刀","布","布","石头","布"] # 电脑出拳的方式
computer_win_condition = [["布","石头"],["石头","剪刀"],["剪刀","布"]] # 每次电脑赢的情况
balance_condition = [["布","布"],["石头","石头"],["剪刀","剪刀"]] # 每次平局的情况
computer_win_number = 0 # 电脑赢的次数
people_win_number = 0 # 玩家赢得次数
li=[]
#********* Begin *********#
for i in range(1,7+1):
li.append(guess_list[i-1])
li.append(people_guess[i-1])
if li in computer_win_condition:
computer_win_number+=1
li.clear()
elif li in balance_condition:
people_win_number+=1
computer_win_number+=1
li.clear()
else:
people_win_number+=1
li.clear()
#********* End *********#
# 游戏进行 7 次之后,进行输赢的判别
if computer_win_number > people_win_number:
print("电脑赢!",end="")
elif computer_win_number < people_win_number:
print( "玩家赢!", end="" )
else:
print("平局!")任务描述
本关任务:编写函数,接收一个十进制整数为参数,返回等值的二进制数。
相关知识
为了完成本关任务,你需要掌握:如何计算十进制转换成二进制。
进制转换
十进制整数转换为二进制整数采用”除2取余,逆序排列”法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。 例如:将十进制数100.345转换成二进制数 img
编程要求
根据提示,在右侧编辑器补充代码,输出十进制整数的对应二进制数。
测试说明
我会对你编写的代码进行测试:
测试输入:10 预期输出:1010
测试输入:100 预期输出:1100100
代码:
def dec_to_bin( number ):
#********** Begin *********/
list1=[]
while( number!=0):
list1.insert(0,number%2)
number=number//2
#此时list1中为[1,1,0,0,1,0,0]是int型的列表
list2=[str(i) for i in list1]
#此时list2中为['1', '1', '0', '0', '1', '0', '0']是str型的列表
list3=''.join(list2)#join函数只能对str操作
return list3
#********** End **********/
num = int(input())
print( dec_to_bin(num) ,end="")此题可以借鉴操作int列表如何转换成字符串
任务描述
本关任务:编写函数,接收一个整数n为参数,打印杨辉三角前n行。
编程要求
根据提示,在右侧编辑器补充代码,输出杨辉三角。
相关知识
杨辉三角形
杨辉三角形是(a+b)**n二项式展开后各项的系数,其各行的系数有以下规律: (1)各行的第一个数和最后一个数都是1; (2)从第三行起,除了每行的第一个数和最后一个数外,其余各数是上一行中同列和前一列两个数之后。例如,第四行第二个数3是第三行中第二个数2和第一个数1之和。如下所示: 1 1,1 1,2,1 1,3,3,1 1,4,6,4,1 1,5,10,10,5,1
测试说明
我会对你编写的代码进行测试:
测试输入:5 预期输出: 1 1,1 1,2,1 1,3,3,1 1,4,6,4,1
测试输入:3 预期输出: 1 1,1 1,2,1
测试输入:6 测试输出: 1 1,1 1,2,1 1,3,3,1 1,4,6,4,1 1,5,10,10,5,1
代码
# -*- coding:utf-8 -*-
def yanghui(n):
#********** Begin *********/
if (n==1):
list1=[[1]]
else:
list1=[[1],[1,1]]
for i in range (2,n):
k=[]
k.append(1)
for j in range (1,i):
k.append(list1[i-1][j-1]+list1[i-1][j])
k.append(1)
list1.append(k)
return list1
#********** End **********/
def output(result):
for row,item in enumerate(result):
for index, number in enumerate(item):
if index != len( item) - 1:
print( "%d," % ( number ), end="" )
else:
if row != len( result ) -1:
print( number )
else:
print( number, end="" )
n = int(input(''))
output(yanghui(n))小提示:空列表无法使用list1[1]=0这样赋值 只能先通过append添加 利用list1[0]=1修改




