目录
1、基本输入输出
2、【入门程序1】猜拳游戏
3、【入门程序2】输出九九乘法表
4、字符串基本操作--增删改查
5、列表基本操作
5、【入门程序3】随机分配办公室
6、字典基本操作
TT最近在学习Python, 有很多东西如果不记录的话就忘了,敲下来方便以后查找。
学习资源:
bilibili: 黑马程序员--(课程标题)--黑马程序员全套Python教程_Python基础入门视频教程,零基础小白自学Python必备教程
使用的解释器和编辑器
解释器链接:Python Release Python 3.7.2 | Python.org
编辑器链接
Download PyCharm: Python IDE for Professional Developers by JetBrains
[正片开始]
python使用input 和print 输入输出,例如
# 我有多重
weight = 80,
print("我有%.2f重" % weight) # 格式化输出,保留两位小数,不足的在后面补0
print(f'我有{weight}重') # 后面不需要分号
secret = input("请输入你的密码:") # input也有打印功能,即先打印前面的一句话,再接收输入
print(f'您输入的密码是{secret}')
print(type(secret)) # type函数可以返回数据的类型 输出class<'str'>
print(type(int(secret))) # input输入默认是str类型,int()函数可以将其变为int类型,即这行输出class<'int'>
Python实现猜拳游戏比c要方便,请看代码和注释:
# 猜拳游戏
import random # 相当于c的头文件,rand()函数(生成随机数)必须的
player = int(input('请出拳:0--石头,1--剪刀,2--布 :')) # input默认输入为'str',必须修改为'int'
computer = random.randint(0, 2)
if (player == 0 and computer == 1) or (player == 1 and computer == 2) or (player == 2 and computer == 0):
print("玩家获胜")
elif player == computer:
print('平局')
else:
print('电脑获胜')
基本循环和变量操作
# 九九乘法表
i = 1
while i <= 9:
j = 1
while j <= i:
print(f'{j}*{i}={j*i}', end = '\t') # '\t'制表符--让输出更加整齐美观
j += 1
print() # print() 自带一个'\n', 即此处相当于打印一个换行符
i += 1 # 循环只需要缩进即可,不需要大括号
这里需要强调的是Python支持切片操作,即可以把字符串的任何连续片段截取到另外一个字符串上,使用起来非常方便
# 切片 序列名[begin:over:length]length指间隔的距离,隔几个选一个(length默认是1,可以省略)
str = "iostream"
i = 0
while i < 8:
print(f'{str[i]}' , end = '\t' )
i += 1
print()
print(str[2:5:2])# 切片是不包含右边的数字的 即左闭右开
print(str[2:5])
print(str[:5])# 前面不写默认是0
print(str[2:])# 后面不写默认是最后
print(str[:])# 如果都不写,就是全部
print(str[::-1]) #如果步长是负数,则是倒序排列
print(str[-4:-1]) # 也是倒序排列,但是不包含结束的位置
print(str[-4:-1:-1]) # 这个不行,因为开始到结束的方向和步长的方向是反的
# 查找
mystr = 'hello world and itcast and itheima and python'
# 1、find()
print(mystr.find("and")) # 查找整个字符串
print(mystr.find("and", 15 , 30)) # 后面分别是开始和结束的下标
print(mystr.find("ands")) # 找不到就返回-1
# 2、idndex()
print(mystr.index("and")) # 查找整个字符串
print(mystr.index("and", 15 , 30)) # 后面分别是开始和结束的下标
# print(mystr.index("ands")) # 找不到就报错
# 3、count()用于统计子串出现的次数
print(mystr.count('and'))
print(mystr.count('and', 15 , 30))
print(mystr.count('ands')) # 找不到就返回0
# rfind()和rindex()用法和find()、index()一样,但是查找顺序从右侧开始
# 修改
#1、replace 不会修改原来的字符串,返回修改后的字符串(字符串是不可变数据类型)
mystr = 'hello world and itcast and itheima and python'
new_str = mystr.replace('and' , 'he') # 后面还有一个参数,表示需要修改的次数,默认是全部
new_str1 = mystr.replace('ans' , 'he' , 1)
print(f'{mystr}')
print(f'{new_str}')
print(f'{new_str1}')
# 2、split() 分割字符串,用法跟replace一样,但返回一个不含分割子串的列表
list = mystr.split('and', 2) # 后面的也是次数,默认是全部
print(list)
# 3、join() 把列表的很多字符串连接成一个大字符串
list = ['aa', 'bb', 'cc']
new_str2 = '...'.join(list) # 分割符要写在前面
print(new_str2)
列表就相当于C语言的数组了,方便的是列表可以很快的判断数据是否在列表当中
# 判断数据是否在列表中 in 和 not in 函数返回的都是bool类型
in 如果在,返回true, 不在返回false
not in 如果不在,返回true, 在返回false
print('TOM' in name_list)
print('tom' not in name_list)# 注意用法
# 查找
# 函数 1、index() 2、count() 跟字符串一样
print(name_list.index('TOM'))
# print(name_list.index('TOM', 1, 2))# 找不到就报错
print(name_list.count('TOM'))
# print(name_list.count('TOM', 1, 2))# 找不到就返回0(三个参数会报错)
# 3、len() 返回列表的数据个数(列表,字典,元组都可以使用)
print(len(name_list))# 注意用法跟上面不同
# 增加
# 1、append() 添加在结尾,以整体添加,如果是一个序列,就添加一个序列,如果是一个列表,就添加一个列表
name_list.append('xiaoming')# 列表是可变类型
print(name_list)
name_list.append([11, 22])
print(name_list)
# 2、extend() 添加在结尾,逐一添加
name_list.extend('xiaoming')
print(name_list)
name_list.extend([11, 22])
print(name_list)
# 3、insert() 指定位置增加数据,以整体增加,第一个参数是下标
name_list.insert(1, 'xiaoming')
print(name_list)
# 删除
# 1、del 可以删除整个列表,也可以删除指定位置的数据
del name_list # 与del(name_list)等价
del name_list[0]
print(name_list)
# 2、pop 删除指定位置的数据,并返回被删除的这个数据,默认从最后位置开始删除
str = name_list.pop(1)# 参数可以省略
print(name_list)
print(str)
# 3、remove 删除指定数据 如果数据不存在就报错,如果这个数据有多个,只删除第一个匹配项
name_list.remove('TOM')
print(name_list)
# 4、clear 清空列表,跟del不同,clear清空之后在打印列表不会报错
name_list.clear()
print(name_list)
# 修改
name_list[0] = 'aaa' # 修改指定位置的数据
print(name_list)
# reverse 逆序,把所有数据反过来存
list = [1, 2, 3, 5, 8, 9, 4, 6]
list.reverse()
print(list)
# 排序 sort reverse = False 升序(默认) reverse = True 降序(False, True首字母大写)
list.sort(reverse = False)
list.sort(reverse = True)
print(list)
# 列表的复制 copy
list2 = list.copy()
print(list)
print(list2)
# 随机分配办公室
# 八位老师,3个办公室,随机
import random
teachers_name = ['TOM', 'LISA', 'ALICE', 'FRACE', 'FRANK', 'ROSE', 'HELEN', 'JOHN']
offices = [[], [], []]
for i in teachers_name:
j = random.randint(0, 2)
offices[j].append(i)
for office in offices:
print(f'办公室的人数是{len(office)}, 老师分别是: ')
for name in office:
print(name)
字典和列表都可以存储不同类型的数据,但那样并不被提倡
字典的操作函数跟列表很像。
dict1 = {'name': 'tom', 'age': 20, 'gender': '男'} # 跟列表不同,字典的数据是以键值对的方式存储的,用逗号隔开,例如第一个,'name'是这个数据的键值key,而'tom',是这个数据的值
# 字典的删除 注意用法
del # 删除字典或者删除指定键值对
del(dict1) # 删除字典,再次打印字典会报错
del(dict1['name']) # 删除指定键值对
del(dict1['names']) # 如果此键值对不存在就报错
# clear 清空字典,但再次打印不会报错
dict1.clear()
print(dict1)
# 字典的查找
# 1、get() 两个参数,第一个参数是键值,键值存在返回键值的值, 键值不存在时:若第二个参数存在,返回第二个参数,如第二个是参数不存在,返回none
print(dict1.get('name')) # tom
print(dict1.get('names')) # none
print(dict1.get('names', 110)) # 110
# 2、keys() 返回可迭代的对象(用for循环遍历的),键值对名称
print(dict1.keys()) # dict_keys(['name', 'age', 'gender'])
# 3、values() 返回可迭代的对象(用for循环遍历的),键值对的值
print(dict1.values()) # dict_values(['tom', 20, '男'])
# 4、items() 返回可迭代的对象(用for循环遍历的),几个元组(小括号表示的),元组数据1是key, 元组数据2是key的值
print(dict1.items()) # dict_items([('name', 'tom'), ('age', 20), ('gender', '男')])
# 字典的遍历
for key in dict1.keys(): # 遍历字典的key
print(key)
for value in dict1.values(): # 遍历字典的value(key的值)
print(value)
for item in dict1.items(): # 遍历字典的键值对
print(item)
# 拆包
for key, value in dict1.items(): #拆包:元组的第一个元素存储在第一个临时变量key, 第二个元素存储在第二个临时变量value上
print(f'{key} = {value}')
PS:没有什么东西是看看就能学会的,这篇文章最大的缺点就是没有列出相关程序的输出结果,希望我和读者在读的时候能够顺便运行一下程序,加深理解。