week1 - 总结
一、markdown语法
1、标题
标题:在普通文字内容前加#,再按空格
# 一级标题
...
###### 六级标题
2、代码块
代码块:三个反引号开头,三个反引号结束,中间写代码。第一个三个反引号的后面写编程语言。
3、图片和超链接
添加图片:感叹号中括号感叹号,然后在小括号中写图片路径(必须英语)
即:
添加超链接:中括号小括号,在中括号输入显示并且可点击的内容,小括号中输入跳转的网页地址
4、表格
表格:|–|–|,再按回车
– | – |
---|---|
5、列表
有序列表语法:数字 + 英文小数点(.) + 空格
例如:
- list1
- list2
无序列表:+或者- 空格
- list1
- list2
6、目录
目录:[toc] + enter
二、Python基本语法和变量
1、基本语法
(1)注释
- 单行注释:#
- 多行注释:三个单引号或者三个双引号
# 单行注释
'''
多行注释
'''
(2)行和缩进
- 行:一个语句表示一行,多个语句在同一行时需要用分号隔开
- 缩进:一个语句的开头不能随意缩进,默认是顶行写
print(1)
print(a);print(b)
(3)标识符和关键字
- 标识符:python命名时要求必须是标识符,标识符要求:名字必须由字母、数字或者下划线组成,不能由数字开头
- 关键字:本身具有特殊意义或者特殊功能的标识符
(4)基本数据类型
- 数字数据:用来表示数值大小的数据(即数字),根据是否有小数点分为整型(int)和浮点型(float)
表示方法:和数学中表示数字方式一样
- 文本数据:用文字符号来表示信息的数据。文本数据的数据类型只有字符串(str)
表示方法:将文本数据放在单引号或者双引号中间
- 布尔数据:在程序中表示真假、成立与否的关系(,数据类型为布尔(bool)
表示方法:只有True,False(用True表示真、成立,即1;用False表示假、不成立,即0)
- 空值:在程序中表示空,没有
表示方法:None
2、类型和类型转换
(1)获取数据类型
- type函数:获取指定类型的数据,表示方法:type(数据)
(2)类型转换
- 表示方法:类型名(数据)
# int(数据)
print(int(1,1)) # 所有小数都可以转换成int(转换的时候只保留整数部分)
print(int(True)) # 所有的布尔值都可以转换成整数
print(int('11')) # 符串内容是整数的字符串(即去掉字符串的引号以后本身是一个整数的字符串)
# float(数据)
print(float(1)) # 所有的整数可以转换成float
print(float(True)) # 所有的布尔值可以转换成float
print(float(2e2)) #去掉字符串的引号以后本身是一个数字的字符串可以转换成float
# str(数据)
print(str(3.14)) # 任何类型的数据都可以转换成字符串,转换成字符串的时候是直接在原有数据外加上引号
# bool(数据) #任何类型的数据都可以转换成布尔
# False
print(bool(0.0)) # 所有的零值(0,0.0等)和空值(None,'',[])都转换成False
# True
print(bool('False')) # 其他的转换成True
3、输出和输入类型
- print - 输出函数
# 一个print打印一个数据
print(100)
# 一个print同时打印多个数据:print(数据1,数据2,...)
print(1,'2',True,type('123'))
# 定制end:print(数据1,数据2,...,end=字符串)
print(1, end=';')
print(2)
'''
1;2
'''
# 定制sep:print(数据1,数据2,...,sep=字符串)
print(1,2,3,sep='=')
'''
1=2=3
'''
# 同时制定sep和end
print(1,2,sep='and',end='!')
'''
1and2!
'''
三、变量和运算符
1、变量
- 变量是用来保存数据的
- 变量名 = 数据
- 变量名:必须符合两个命题要求和三个规范
命名要求 | 三个规范 |
---|---|
标识符 | 见名知意 |
不能是关键字 | 不使用系统函数名(print、type等)、类名(int、float等)或者模块名 |
所有字母小写,多个字母之间用下划线隔开(也可以驼峰式命名) |
- 多个变量
# 同时定义多个变量不同的值:变量1,变量2,变量3,... = 数据1,数据2,数据3,...
x,y = 1,2
print(x,y)
# 交换不同变量的值:变量1,变量2 = 变量2,变量1
m = 1
n = 2
m,n = n,m
print(m,n)
2、运算符
- 数学运算符
数学运算符:+(加)、-(减)、*(乘)、/(除)、%(取余-求余数)、//(整除)、**(幂运算)
- 比较运算符
比较运算符:>(大于),<(小于),>=(大于等于),<=(小于等于),==(等于),!=(不等于)
注意:所有比较运算符的运算结果都是布尔值
- 逻辑运算符
逻辑运算符:and(逻辑与),or(逻辑或),not(逻辑非)
- 赋值运算符
赋值运算符:基本运算符( = )和复合运算符(+=、-=、*=、/=、%=、//=、**=)
例如:a += 1 相当于 a = a + 1
- 运算符的优先级
数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符(最低)
** > *、/、%、// > +、-
有括号的先计算括号里面的
四、分支和循环
根据代码的执行顺序的不同,可以将代码分成3种结果:
1、顺序结构
- 代码从上往下按顺序一条一条的执行(每个结构只执行一次)
2、if分支结构
# if单分支结构
'''
if 条件语句:
代码段
'''
# if双分支结构
'''
if 条件语句:
代码段1:
else:
代码段2:
'''
# if多分支结构
'''
if 条件1:
代码段1
elif 条件2:
代码段2
elif 条件3:
代码段3
...
else:
代码段n
'''
3、循环结构(for,while)
- for循环
'''
for 循环变量 in range(start,end) (注意:end的值取不到)
语句1
语句2
语句3
'''
- while循环
'''
while 循环条件(产生布尔值的表达式):
语句1
语句2
语句3
'''
五、练习
1、求1到100的和,1到100奇数的和
sum = 0
j_sum = 0
for i in range(1, 101):
sum += i
if i % 2 != 0:
j_sum += i
print(f'1~100奇数和为{j_sum}')
print(f'1~100的和为{sum}')
2、找出100到999之间的水仙花数
(水仙花数:abc = a * 3 + b * 3 + c * 3)
for i in range(100,1000):
a = i // 100 # 百位
b = i % 100 //10 # 十位
c = i % 10 # 个位
if i == a ** 3 + b ** 3 + c ** 3:
print(f'{i}是水仙花数')
3、输入一个大于1的正整数,判断它的是不是质数
num = int(input('请输入一个大于1的正整数:'))
is_prime = True
for i in range(2, int(num ** 0.5 + 1)):
if num % i == 0:
is_prime = False
break
if is_prime:
print(f'{num}是质数')
else:
print(f'{num}不是质数')
4、输出100以内的质数
for i in range(1, 100):
is_prime = True
for j in range(2, int(i ** 0.5 + 1)):
if i % j == 0:
is_prime = False
break
if is_prime:
print(f'质数:{i}')
5、求1-100的和
sum = 0
for i in range(1, 101):
sum += i
print(sum)
6、猜数字小游戏
游戏规则:计算机产生一个1-100的随机数让人来猜,人输入自己的数字,计算机会提示’大一点‘,’小一点‘,‘猜中了’,如果没有猜中游戏继续。如果猜中了游戏结束,如果猜了7次以上,计算机提示’智商拙计‘。
import random
answer = random.randrange(1, 101)
count = 0
while True:
count += 1
num = int(input("请输入数字:"))
if num == answer:
print(f'猜中了!!!')
break
elif num < answer:
print(f'大一点')
else:
print(f'小一点')
if count > 7:
print(f'智商拙计!!!')
7、百钱百鸡问题
公鸡5元一只,母鸡3元一只,小鸡1元三只,欲用100买100只鸡,问公鸡、母鸡、小鸡各多少只?
money = 100
for x in range(0,21):
for y in range(0,34):
z = 100 - x - y
if z % 3 == 0 and 5 * x + 3 * y + z // 3 == 100:
print(f'公鸡、母鸡、小鸡各有{x}、{y}、{z}只')
8、捕鱼问题
有ABCDE五个人取捕鱼,捕完鱼太累倒头睡觉。第二天,A第一个醒过来,他把鱼分成五分,扔掉多余的一条,拿走自己的一份;B第二个醒过来,他以为鱼还没有分过,把鱼分成5分,扔掉多余的1条,拿走自己的一份;C、D、E依次醒过来,都是按照上面的方法,把鱼分成5条,扔掉多余的一条。问:他们最少捕了多少条鱼?
fish = 6
while True:
t = fish
is_enough = True
for _ in range(5):
if (t - 1) % 5 == 0:
t = (t - 1) // 5 * 4
else:
is_enough = False
break
if is_enough:
break
fish += 5
print(f'最少有{fish}条鱼')
9、CRAPS赌博游戏 – 摇两颗色子
游戏规则:玩家摇色子,如果第一次要摇出了7点或者11点,玩家胜;如果摇出2点,3点,12点,庄家胜;其他情况,游戏继续,玩家重新摇色子,如果摇出了第一次摇的点数,玩家胜;
如果摇出7点,庄家胜;其他情况,游戏继续,直到分出胜利。
1、把游戏的场景模拟出来,输出玩家胜还是庄家胜;
2、玩家一开始有1000元,每次玩的时候下注,赢了获得对应的注码;输了就输掉对应的注码;
3、游戏结束的条件是玩家破产
import random
def roll_dice(n=2):
total = 0
for _ in range(2):
total += random.randrange(1, 7)
return total
money = 1000
while money > 0:
print(f'你的总资产为:{money}元')
bet = 0
if money > 0 or money <= 1000:
bet = int(input('请下注:'))
first_piont = roll_dice(2)
if first_piont in (7, 11):
print(f'玩家胜利!!!')
money += bet
elif first_piont in (2, 3, 4):
print(f'庄家胜利!!!')
money -= bet
else:
while True:
current_piont = roll_dice(2)
if current_piont == first_piont:
print(f'玩家胜利!!!')
money += bet
break
elif current_piont == 7:
print(f'庄家胜利!!!')
money -= bet
break
print(f'你破产了,game over!!!')
10、把两颗色子摇10000次,统计每种点数出现的次数,频率
import random
def roll_dice(n=2):
total = 0
for _ in range(2):
total += random.randrange(1, 7)
return total
c2 = c3 = c4 = c5 = c6 = c7 = c8 = c9 = c10 = c11 = c12 = 0
for _ in range(10000):
face = roll_dice(2)
if face == 2:
c2 += 1
elif face == 3:
c3 += 1
elif face == 4:
c4 += 1
elif face == 5:
c5 += 1
elif face == 6:
c6 += 1
elif face == 7:
c7 += 1
elif face == 8:
c8 += 1
elif face == 9:
c9 += 1
elif face == 10:
c10 += 1
elif face == 11:
c11 += 1
else:
c12 += 1
print(f'2点出现了{c2}次,频率:{c2 / 10000}')
print(f'3点出现了{c3}次,频率:{c3 / 10000}')
print(f'4点出现了{c4}次,频率:{c4 / 10000}')
print(f'5点出现了{c5}次,频率:{c5 / 10000}')
print(f'6点出现了{c6}次,频率:{c6 / 10000}')
print(f'7点出现了{c7}次,频率:{c7 / 10000}')
print(f'8点出现了{c8}次,频率:{c8 / 10000}')
print(f'9点出现了{c9}次,频率:{c9 / 10000}')
print(f'10点出现了{c10}次,频率:{c10 / 10000}')
print(f'11点出现了{c11}次,频率:{c11 / 10000}')
print(f'12点出现了{c12}次,频率:{c12 / 10000}')
11、找出10000以内的完美数
完美数:如果一个数等于除自身以外的所有因子的和,那么这个数就叫做完美数
例如:6 = 1 + 2 + 3
for i in range(1, 10000):
sum = 0
for j in range(1, int(i ** 0.5 + 1)):
if i % j == 0:
sum += j
if i != i / j:
sum += i // j
if i == sum:
print(f'{i}是一个完美数')