学习来源:B站老九学堂
2020-12-04
第一章:杂七杂八的
代码规范,开头可以填上一些信息,比如作者版权
# -*- coding:utf-8 -*-
# @功能描述:todo
# @程序作者:chenwei
# @版权信息:copy right
比如游戏中生命值输出,可以带颜色,还有可以用乘号,来复制。
print("\n英雄名称")
print("生命值:"+3*"■"+2*"▢")#no color
print("生命值:"+"\033[93m"+3*"■"+2*"▢"+"\033[0m")# add color
第二章:变量,表达式,运算符
python3中有六个标准的数据类型:
- 数字类型:Number
- 字符串类型:String
- 元组类型:Tuple
- 列表类型:List
- 集合类型:Set
- 字典类型: Dictionary
列表和元组的区别:
abcd=(1,2,3,4) #元组一旦定义,大小就不能改变
list1 = [1,2,3,4,5] #列表比元组更加灵活,可以追加改变
list1.append(112) #append,追加函数
注意:比如输入
phone = input()
phone1=phone + 1
此时这个phone是字符串类型,不能当作整数类型加减乘除,有以下方法可以加减乘除:
- 把phone变成整数,phone = int(phone)
- 使用强大的eval函数:
phone=eval(input(...))小技巧,一个很大的数字怎么知道有多少位,首先转换成字符串,然后用len去看有多少字符串,举例:
print(len(str(2**32768))如何计算一下运算时间,需要加入time函数
import time start = time.time() print(len(str(2**123456))) print("Dauer",time.time()-start) #开始时间减去结束时间
eval和input
相当于把字符串变成数字result = input("please input a number:") # result = int(result) # result = float(result) result = evla(result) result **=2 print("the result is", result)
使用字符串format方法
#<模板字符串>.format(<逗号分隔的参数>) #示例 print("{}上{}下".format(7,8)) #7上8下 str = "今天是个好日子呀好呀好日子" print("|{0:30}|".format(str)) #如果后面的参数是字符串,默认左对齐,数字则是默认右对齐 print("|{0:>30}|".format(str)) #>30 宽度为30个字符,右对齐 print("|{0:^30}|".format(str)) #^30 宽度为30个字符,居中对齐 print("|{0:<30}|".format(str)) #<30 print("|{0:#30}|".format(str)) #str没有30个字符,多的就用#填充更多用法请google
第二章笔记结束 –2020.12.04
第三章
运算符与表达式
布尔类型:
布尔类型取值为True/False,python 中1表示True,0表示False 布尔类型建议使用is开头
is_i_am_happy = true
print(type(is_a))
print("今天天气不错:", not is_i_am_happy)
print(int(is_i_am_happy))
#注意此处打印的第一个是bool,代表is_i_am_happy是布尔类型,第二个打印出来的是今天天气不错: false,第三个打印的是1.因为true就是1
注意在python中,非零(1)表示真,零表示假
条件结构
举例,算圆的半径
radius = eval(input("请输入一个圆的半径:"))
#注意这里加了一个eval,之前上一章讲过,让输入变成浮点数,不然就是string不是数字没法后面的计算
if radius >= 0:
area = 3.14*radius**2
print("半径为{:.2f}的园的面积为{:.2f}".format(radius,area))
#注意语法format的用法!!!
else
print
逻辑运算符
逻辑运算符也叫布尔运算符,与或非,and or not
第四章 循环
使用哨兵控制循环
先执行,后判断的程序逻辑
nick_name = ""
answer = "n"
while answer == "n":
nick_name = input("请起一个名字吧:")
print("名号:"+ nick_name)
answer = input(nick_name + "是否满意y/n")
print(nick_name)
注意:不要用浮点数去控制循环,因为对于浮点数,只能无限接近整数,比如1,其实是0.999999999
第五章(难点,列表)、
创建列表
list1 = list() #创建一个空列表
list2 = list(“金木水火土”) #创建一个带有5个字符元素的列表
list3 = list([9,5,2,7])
list4 = list(range(0,10))
list5 = [] #简写,创造一个空列表
list6 = [range(10)]
推导式
my_list = [i for i in range(10)] #0123456789
my_list = [10 for i in range(10)] #10 10 10....
直接贴图好了
list1 = [num for num in range(0,101) if num%2 == 0]
list1 = [num for num in range(0,101,2)]
print("0到100之间的偶数为:",list`)
#这两都可以
#列表求和,最大值,最小值,sum,max,min
list1 = [x for x in range(10)]
print("1-100之和为:",sum(list5))
import random
random.shuffle(list1)#shuffle,乱序,洗牌
list1=[]
answer='Y'
while answer=='y':
score = eval(input("请输入成绩"))
list1.append(score)
answer=input("继续输入吗y/n")
print("您的输入为",list1)
example:模拟洗牌
#生成52个元素,表示一副牌
cards=[card for card in range(52)]
types = ["黑桃","红心","方块","梅花"]
values = ["ACE","1"]
values += [str(value) for value in range(2,11)]
values += ["JACK","QUEEN","KING"]
#print()//13是花色,%13是什么
random.shuffle(cards)
for i in range(len(cards)):
type = types[cards[i]//13]
value = values[cards[i]%13]
print("[{}]:{}-{}".format(cards[i],type,value),end='')
#换行
if (i+1)%6 == 0:
print()
else:
print(end="\t")
#生成5个随机数
import random
lst = [random.randint(1,100) for i in range(5)]
第六章 函数(重点)
内置函数
函数总结
函数这块有点难,所以把难点就现在总结这里,把每个知识点写出来我估计我也不会记得,所以就写总结好了,到时候有不懂的再去查查看
在python中,一切皆为对象,一切皆为对象的引用–非常重要
不可变类型(对象):int, float, string, number, tuple,指的是值不会变,修改了也不变
number = 1024,在这里,1024才是对象,有个地址,num只是个名字,相当于num保存了1024这个对象的引用。举例
num = 1024 + 10 #1034实际上已经是另一个对象了,实际上1024这个值就没了,回收了,num这个变量就指向了新的空间,1034的空间。
特点是,不可变对象的值并没有发生改变,变的只是创建了新的对象,改变了变量对对象的引用。意思就是1024这个值是不能变的。
可变类型:列表,字典,集合,自定义类型 所谓可变对象,对象的内容可变。
举例,自定义函数,求n次方
def pow(num,n=2):
#这里需要注意一下,n=2 属于默认值,就是默认n=2.但是输入之后n就可以有自己的值了
result = 1
for i in range(n):
result *= num
return result
# 第八章
## 字符串的常用方法
# isalnum
str1 = "abc123"
print(str1.isalum())
True.
#isdecimal()是不是为纯数字,举例,必须输入正确,不然不行
age=''
while not age.isdecimal() or int(age) >100 or int(age)<0:
age = input("请输入你的年龄(0-100):")
age = int(age)
print("your age is:",age)
举例:实现用户注册功能:
- 用户名最多25个字符长度,不能包括宫格,单双引号,问好等特殊符号
- 密码6-18为,只能包含字母,数字,特殊符号
(1) 纯数字,纯字母时,密码强度都是弱
(2)数字+符号,数字加字母,字母+符号,强度为中 (3) 同时存在三种字符,强度为强 - 用户输入正确的email
必须包含@,且只能有一个
@和.符号不能再开头也不能在结尾#用户名最多25个字符长度,不能包括宫格,单双引号,问好等特殊符号 def validate_login_name(login_name): str_len = len(login_name) if str_len == 0 or str_len >25: return false #自定义非法字符串,可自己改 invalid_chars = "'\"!@#$$%%^" for char in login_name: if char in invalid_chars: return false return True # #2. 密码6-18为,只能包含字母,数字,特殊符号 # (1) 纯数字,纯字母时,密码强度都是弱 # (2)数字+符号,数字加字母,字母+符号,强度为中 # (3) 同时存在三种字符,强度为强 valid_symbols = [chr(value) for value in range (ord("A"), ord("Z")+1)]#所有A到Z的字母 valid_symbols += [chr(value) for value in range (97,97+26)] #所有小写字母 valid_symbols += [chr(value) for value in range (ord("0"), ord("9")+1)]#所有数字 valid_symbols += list("!@#$%") def validate_password(password): str_len = len(password): if str_len < 6 or str_len > 18: return false global valid_symbols for char in password: if char not in valid_symbols: return False #如果代码传到这里,就说明一定合法。 if password.isdecimal() or password.isalpha() return "x"*2 if password.isalnum(): return "x"*4 def validate_password_decimal_symbol(password): #判断是非数字加合法符号组合 valid_symbols = [chr(value) for value in range (ord("0"), ord("9")+1)]#所有数字 valid_symbols += list("!@#$%") valid_symbols = str(valid_symbols) for char in password: if valid_symbols.find(char) == -1: return False return True