Week1 - Python基础笔记

1. 安装Python环境

想要开始你的Python编程之旅,首先得在计算机上安装Python环境,简单的说就是得安装运行Python 程序的工具,通常也称之为Python解释器。我们强烈建议大家安装Python 3的环境,很明显它是目前更 好的选择。

1.1 Windows环境或者macOS环境

可以在Python官方网站Python官方网站找到下载链接并下载Python 3的安装程序。

1.2 集成开发环境 - PyCharm

PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。

2. 第一个Python程序

在上一课中,我们已经了解了Python语言并安装了运行Python程序所需的环境,相信大家已经迫不及 待的想开始自己的Python编程之旅了。首先我们来看看应该在哪里编写我们的Python程序。

2.1 创建项目

运行PyCharm,可以选择"新建项目"来创建一个新的项目。

3. 注释

注释是编程语言的一个重要组成部分.就是用来解释自己写的程序的是什么意思?
注释的作用:
​ 1.商业项目中,多人协作开发,方便别人查阅自己的代码.
​ 2.提高自己在后续的项目迭代中的可读性和开发效率.
Python中有两种形式的注释:

# 我是单行注释
语法: ''' 注释文本 ''' """注释文本"""
示例:
'''
我是演示多行注释的代码
可以支持换行
'''
"""
第一行
第二行
第三行
"""

4. 行和缩进

​ 1.一条语句占一行,一行结束不需要写分号。

print("hello word")

​ 2.如果需要将多条语句写在同一行,语句和语句之间必须加分号。

print("hello word!");print("hello word!")

​ 3.一行代码的开头不能随意添加缩进(空格或者Tab) - 代码默认情况下顶格写。

5. 标识符的命名规则与规范

python中的标识符主要是指作为:变量 函数 类 模块以及其他对象的名称.
定义合法标识符的规则:
1.由数字 字母 下划线组成,不能以数字开头
2.严格区分大小写 age 和 Age 是两个不同的标识符
3.不能使用关键字 通过keyword模块的keyword.kwlist属性查看关键字

python中常见的关键字:

from keyword import kwlist
print(kwlist) # 打印Python关键字
"""
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert','async', 'await','break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

规范:
1.见名知意.看见标识符的名字就大概知道是什么意思
2.遵守一定的命名规范:
a.小驼峰命名法:第一个单词首字母小写,以后每个单词的首字母大写 示例: userNameAndPassword
b.大驼峰命名法:每个单词的首字母大写 示例:UserName
c.下划线命名法:user_name_and_password
注意:在python里的变量\函数\模块名使用下划线连接; python的类名使用大驼峰命名法
示例:

name1 = "jack"
# 12name = "hello" 标识符命名不能以数字开头
# def = "函数" 标识符命名不能使用关键字
print(name1)
# print(12name)
# print(def)

6. 变量

6.1 变量定义:

变量存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。
基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。
因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。

6.2 变量赋值

Python 中的变量赋值不需要类型声明。
每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
等号 = 用来给变量赋值。
等号 = 运算符左边是一个变量名,等号 = 运算符右边是存储在变量中的值.
示例:

print(name)
age = 18
print(age)
num = 4.34
print(num)
# python中可以一次性给多个变量赋值
x = y = z = 12
print(x,y,z)
a,b = 23,4.32
print(a,b)

7. 输出函数 print()

print() - 输出函数(打印函数),在控制台输出/打印数据
示例:

'''
print(self, *args, sep=' ', end='\n', file=None)
参数分别有:1. self:表示类名,一般指当前类2. *args 表示可变参数,可以多个,一般表示我们要输出的数据3. sep 表示输出多个数据时,多个数据之间的间隔 默认值是空格4. end 表示print()函数执行完毕后,以什么结尾 默认值是换行5. file 表示文件名称 默认值是None(空)
'''
print(100) # 100
print(99,3.14,"abc",True) # 99 3.14 abc Trueprint(100,end="+")
print(200,end="=")
print(100+200,end=";")
#最终打印结果:100+200=300;print(100,200,300,sep=",")  # 100,200,300

8. 输入函数 input()

输入函数 - input(数据)
在程序中获取从控制台输入的数据,程序中有多少个input,控制台就可以输入多少个数据(每次输入以回车结束)

语法:

"""
变量 = input("提示信息")
参数: input函数中,输入提示信息,
注意:a.在input函数执行完毕后,定义变量接收用户输入的内容.b.input函数接收的数据类型是字符串.c.程序会在输入函数的位置暂停,直到在终端输入数据并按下回车键后才会执行后续的代码.
Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型。
"""
# 示例:
name = input("请输入你的名字:")
age = int(input("请输入你的年龄"))
print("我的名字是:",name)
print("我今年",age)

9. 基本数据类型

1.数字数据(数字 - 支持数学运算(加减乘除)、比较大小)
​ 意义:用来表示数值大小的数据就是数字,例如:价格、年龄、身高、距离…
​ 表示方法:和数学中表示数字的方法一样,例如;99、3.14、-9、+1、3e4(科学计数法)
​ 类型:int(整型–无小数点的整数)、float(浮点型–有小数点的小数)
示例:

age = 18 # 整型(int)
pi = 3.14 # 浮点型(float)

2.文本数据
意义:用文字符合来表示信息的数据就是文本数据,例如:姓名、籍贯、学校、电话号码、身份证号码、邮编…
表示方法:将文本数据放在单引号或者双引号之间,例如:”中国“、’123456789‘
类型:只有字符串一种类型;str(字符串–由数字、字母、下划线、汉字等组成的一串字符)
示例:

name = "xiaoming"
Origin = '四川_成都'

3.布尔类型
意义:在程序中表示真假、成立不成立关系的数据。(用True表示真、看到、成立;用False表示假、否定、不成立)
表示方法:只有两个值(True、False)
类型:布尔(bool)
示例:

bool1 = Ture
bool11 = False

4.空值
意义:在程序中表示空、无、没有
表示方法:None
示例:

num = None

10. Python基本数据类型转换

类型转换: 将一个类型的数据转换为其他类型的数据 比如: int===>str、str===>int、bool===>int

10.1 获取数据的类型 - type函数

type(数据) — 获取指定数据类型
示例:

print(type(3.14)) # <class 'float'>
print(type(100)) # <class 'int'>
print(type("jakljl165456")) # <class 'str'>
print(type(True)) #<class 'bool'>

10.2 int(): 将其他数据类型转换为整型

int(数据) - 所有的小数、布尔值、部分字符串可以转换成int
​ a.所有小数都可以转换成int型 - 转换时只保留整数部分
​ b.所有布尔都可以转换成int型
​ c.字符串内容是整数的字符串(去掉字符串的引号以后本身是一个整数的字符串)才可以转换成int型示
示例:

print(int(3.14)) # 3
print(int("158")) # 158
print(int(True)) # 1
print(int("sbc")) # 报错

10.3 float(): 将其他数据类型转换为浮点型

float(数据) - 所有的整数、布尔值、部分字符串可以转换成float
​ a.所有整数都可以转换成float型
​ b.所有布尔都可以转换成float型
​ c.字符串内容是数字的字符串(去掉字符串的引号以后本身是一个数字的字符串)才可以转换成float型
示例:

print(float(99)) #99.0
print(float(False)) # 0.0
print(float('3.14')) # 3.14
print(float(skjnj)) # 报错

10.4 str(): 将其他数据类型转换为字符串

str(数据) - 任何类型的数据都可以转换成字符串类型,转换成字符串的时候直接在数据外加引号。
示例:

print(str(99)) # 99

10.5 bool() : 用于将给定参数转换为布尔类型.如果没有参数,返回False

bool(数据) - 任何类型的数据都可以转换成布尔型。所以零值(0、0.0…)和空值(None、‘’、[]…)转换成False,其他都是Ture
示例:

print(bool(100)) # True
print(bool(3.12)) # True
print(bool(0)) # False
print(bool("hello")) # True
print(bool("")) # False
print(bool(None)) # False

11. python运算符

11.1 算术运算符

+ - *【乘法】 /【除法】 %【求余或者取模】 **【求幂或者几次方】 //【取整】
a = 12
b = 3
c = 7
print(a + b) # 加法运算
print(a - b) # 减法运算
print(a * b) # 乘法运算
print(a / b) # 除法运算# x % y  -   求x除以y的余数
print(a % c) # 取余 结果为5
# 应用1:判断整除关系(判断一个数是否能够被另外一个数整除:判断这两个数的余数是否为0)
print(10 % 5)   # 0
print(8 % 2)    # 0# 判断数字的奇偶性:所有能被2整除的数就是偶数
num = 57
print(num % 2)  # 1 # 应用2:取整数的低位数(砍掉高位保留低位)  -  让整数对10或者10的n次方进行取余操作,可以获得整数的最1位或者后n位数
num = 345
print(num % 10)     # 5
print(num % 100)    # 45print(72823 % 10)       # 3
print(72823 % 100)      # 23
print(72823 % 1000)     # 823# x // y  -  x除以y的商,商向小取整(找和尚相邻的两个整数中较小的那个)
print(a // 7) # 取整
# 练习1:获取num中的十位数
num = 78294# 方法1:将原数据的十位数变成个数(把原来的个位数砍掉)
# 78294  -> 78294 // 10 ->  7829  ->  7829 % 10  ->  9
print(num // 10 % 10)# 方法2:
# 78294 -> 78294 % 100 -> 94 -> 94 // 10 -> 9
print(num % 100 // 10)# 练习2:获取num中的百位数
num = 82339
# 82339 -> 339 // 100 -> 3
print(num % 1000 // 100)# 82339 -> 823 % 10 -> 3
print(num // 100 % 10)

11.2 赋值运算符

简单赋值运算符:= 给一个变量进行赋值

复合赋值运算符:+= -= %= /= … 给一个变量进行赋值,同时给变量进行相应的运算

运算符 描述 实例
= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 取模赋值运算符 c %= a 等效于 c = c % a
//= 取整除赋值运算 c **= a 等效于 c = c ** a
**= 幂赋值运算符 c //= a 等效于 c = c // a
# 简单的赋值运算符 python中 = 和数学中的 = 不是一回事. python中的 = 表示把右边的值赋给左边
的变量.
num = 13
print(num)# 对原来的num变量加 21 ,然后把运算后的结果再赋值给num变量
num = num + 21
print(num)# 复合的赋值运算符 += -= *= /= %= //= **=
num += 21 # 等价于 num = num + 21
print(num)
num1 = 23
num1 -= 22 # 等价于 num1 = num1 - 22
print(num1)
num2 = 6
num2 *= 3 # 等价于 num2 = num2 * 3
print(num2)
num3 = 12
num3 /= 4 # 等价于 num3 = num3 / 4
print(num3)
num4 = 21
num4 %= 5 # 等价于 num4 = num4 % 5
print(num4)
num5 = 3
num5 **= 2 # 等价于 num5 = num5 ** 2
print(num5)
num6 = 54
num6 //= 7 # 等价于 num6 = num6 // 7
print(num6)
# 注意: python中没有 ++ -- 运算
a = 12
a += 1 # 其他语言中的 a++ a--
print(a

11.3 关系(比较 或者 条件)运算符

作用:比较大小,得到结果为布尔值【如果表达式成立,则返回True,如果不成立,则返回False】 字符串之间使用关系运算符会按照ASCII码值进行比较.

> < >= <= ==【等号】 != 【不等于】

主要用于if 语句和 循环结构

a = 12
b = 31
c = 12
print(a < b) # True
print(a > b) # False
print(a >= b) # False
print(a <= b) # True
print(a == c) # True
print(a != b) # True
'''
# 字符串也可以使用关系运算符进行相关的操作 字符串进行比较时,是按照自己对应的ASCII值进行的比较
print("a" > "f") # False

11.4 逻辑运算符

高中数学中我们就学过逻辑运算,例如 p 为真命题,q 为假命题,那么“p且q”为假,“p或q”为真,“非q” 为真。Python 也有类似的逻辑运算,请看下表:

逻辑 运算 符 含义 基本样式 说明
and 逻辑与运算,等价 于数学中的“且” or 逻辑或运算,等价 于数学中的“或” a and b 当 a 和 b 两个表达式都为真时,a and b 的结果才为 真,否则为假。
or 逻辑或运算,等价 于数学中的“或” a or b 当 a 和 b 两个表达式都为假时,a or b 的结果才是假, 否则为真。
not 逻辑非运算,等价 于数学中的“非” not a 如果 a 为真,那么 not a 的结果为假;如果 a 为假,那 么 not a 的结果为真。相当于对 a 取反。

逻辑运算符一般和关系运算符结合使用,例如:

# and(逻辑与) or(逻辑或) not(逻辑非)# and(逻辑与): 运算规则: 只要有一个表达式的结果是False,则整个表达式的结果为False.只有当
# 等号两边的两个表达式的结果全部为True的时候,则整个表达式的结果才是True.
print(23 > 11 and 19 > 14) # True
print(23 > 11 and 19 > 34) # False
print(87 < 67 and 34 > 23) # False# 案例1:写出判断num是否能够同时被3和5整除的条件
num = 30# 条件:num是否能够同时被3和5整除  -> 既能够被3整除,又能够被5整除  -> 能被3整除的条件和能被5整除的条件同时成立
# 能被3整除的条件: num % 3 == 0
# 能被5整除的条件: num % 5 == 0
print('num是否能够同时被3和5整除:', num % 3 == 0 and num % 5 == 0)
print('num是否能够同时被3和5整除:', num % 15 == 0)# 案例2:写出判断num是否是大于10的偶数的条件
num = 121# 条件:num是否是大于10的偶数  -> 大于10,是偶数
# num是否大于10的条件: num > 10
# num是否是偶数:num % 2 == 0
print('num是否是大于10的偶数:', num > 10 and num % 2 == 0)# 练习:写出判断num是否是能被5整除的奇数
num = 15
print('num是否是能被5整除的奇数:', num % 5 == 0 and num % 2 != 0)# or(逻辑或): 运算规则:只要有一个表达式的结果是True,则整个表达式的结果是True.只有等号两边的两个表达式的结果全部是False的时候,则整个表达式的结果才是False.
print(23 > 12 or 98 < 65) # True
print(23 < 12 or 98 > 65) # True
print(23 < 12 or 98 < 65) # False# 练习:判断year对应的年份是否是闰年
# 闰年分为普通闰年(能被4整除但是不能被100整除)和世纪闰年(能被400整除)两种year = 2008
# 普通闰年:year % 4 == 0 and year % 100 != 0
# 世纪闰年:year % 400 == 0
print('否是闰年:', (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0))# not(逻辑非) 运算规则: 对原来的结果取反,原来是True,取反后变为False.原来是False,取反后变为True.
print(True)
print(not True) # False
print(False)
print(not False) # True# 案例1:写出age不大于18的条件
age = 72
print(not age > 18)
print(age <= 18)# 案例2:num不等于10的条件
num = 23
print(not num == 10)
print(num != 10)# 练习:写出判断num是否不能同时被3和7整除的条件
num = 34
print(num % 21 != 0)
print(not(num % 3 == 0 and num % 7 == 0))# 能被3整除的时候不能被7整除、能被7整除的时候不能被3整除、既不能被7整除也不能被3整除
print((num % 3 == 0 and num % 7 != 0) or (num % 7 == 0 and num % 3 != 0) or (num % 3 != 0 and num % 7 != 0))

逻辑运算符的本质

在 Python 中,and 和 or 不一定会计算右边表达式的值,有时候只计算左边表达式的值就能得到最终结
果。另外,and 和 or 运算符会将其中一个表达式的值作为最终结果,而不是将 True 或者 False 作为最终
结果。对于 and 运算符,两边的值都为真时最终结果才为真,但是只要其中有一个值为假,那么最终结果就是假,
所以 Python 按照下面的规则执行 and 运算:
如果左边表达式的值为假,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响 最
终结果,最终结果都是假,此时 and 会把左边表达式的值作为最终结果。如果左边表达式的值为真,那么最终值是不能确定的,and 会继续计算右边表达式的值,并将右边表达式的值
作为最终结果。对于 or 运算符,情况是类似的,两边的值都为假时最终结果才为假,只要其中有一个值为真,那么最终结果
就是真,所以 Python 按照下面的规则执行 or 运算:
如果左边表达式的值为真,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响 最
终结果,最终结果都是真,此时 or 会把左边表达式的值作为最终结果。
如果左边表达式的值为假,那么最终值是不能确定的,or 会继续计算右边表达式的值,并将右边表达式的值
作为最终结果。

12. Python流程控制

根据代码执行顺序的不同,可以将代码分成3种结构:即顺序结构、选择(分支)结 构和循环结构。
Python 顺序结构就是让程序按照从头到尾的顺序依次执行每一条 Python 代码,不重复执行任何代码,也 不跳过任何代码。
Python 选择结构也称分支结构,就是让程序“拐弯”,有选择性的执行代码;换句话说,可以跳过没用的代 码,只执行有用的代码。
Python 循环结构就是让程序“杀个回马枪”,不断地重复执行同一段代码。

12.1 分支结构

if单分支结构 - 如果×××就×××

语法:
if 条件语句:执行语句流程:
要么执行,要么不执行,若表达式成立(True),就执行结构中的执行语句.若表达式不成立,则跳过整个if结构,执行下面
的语句
num = 999
if num % 2 == 0:print("偶数")# 练习1:根据num的值打印'3的倍数'
num1 = 89
if num % 3 == 0:print("3的倍数")# 练习2:如果year对应的年份是闰年就打印'闰年'
year = 2007
if (year % 4 == 0 and year % 400 != 0) or year % 400 == 0:print('润年')# 练习3:若x是整数就打印'整数'
x = -5.6
if type(x) == int:print('整数')
else:print("小数")

if-else双分支结构 - 如果×××就×××,否则就×××

语法:
if 条件语句:执行语句1
else:执行语句2流程: 假如表达式成立(True)就执行语句1,若表达式不成立,则执行语句2.语句1和语句2永远不会
同时出现
num2 = 96
if num2 % 2 == 0:print("偶数")
else:print("奇数")year = 2007
if (year % 4 == 0 and year % 400 != 0) or year % 400 == 0:print('润年')
else:print("平年")

三元运算符: 是if -else结构的简写方式

# 求出两个数字中比较大的一个数
# if else的写法
a = 12
b = 54
if a > b:
print("大的数字是:",a)
else:
print("大的数字是:",b)
# 三元运算符的写法:
max = a if a > b else b
print("大的数字是:",max)

if-elif-else多分支结构 - 如果×××就×××,如果×××就×××…,否则就×××(根据不同的条件做不同的事情)

语法:
if 表达式1:执行语句1
elif 表达式2:执行语句2
elif 表达式3:执行语句3
......
else:执行语句n说明:实现了多选一的操作,会根据不同的条件从上往下来进行匹配,如果匹配上了,则执行对应的语句,然
后直接结束整个if-elif语句,但是,如果所有的条件都不成立的话,则执行else后面的语句
注意:不管if-elif-else有多少个分支,都只会执行其中的一个分支
score = 75
if score >= 90:print("A")
elif score >= 80:print("B")
elif score >= 60:print("C")
else:print("D")year = 2008
if year % 4 == 0 and year % 400 != 0:print('普通润年')
elif year % 400 == 0:print("世纪润年")
else:print("平年")

嵌套语句

语法:
if 表达式1:if 表达式2:if 表达式3:执行语句
说明:if语句的嵌套,可以在单分支,双分支,多分支之间进行任意组合
# if语句中再嵌套if语句
ticket = input("是否买到了车票?")
if ticket == "yes":print("买到了车票,可以进站!")safe = input("安检是否通过?")if safe == "yes":print("安检过关,可以进入候车室")else:print("安检未通过,请检查携带物品")
else:print("车票都没有,走远点!")

12.2循环结构

for循环

range函数:
range([start],end,[step]) 注意: start 和 step 是可选参数,在调用函数的时候,这两
个参数可以写也可以不写start:表示开始的数字,默认从0开始 (包含start)end:表示结束的数字 (不包含end)step:表示步长(数字之间的间隔) (默认值为1)
功能:是生成具有一定规律的序列
注意:range生成的序列,包含开始的数字(start),数字截止到 end - 1 不包含end本身
语法:
for 循环变量 in range(start, end):语句1语句2语句3
for i in range(1, 9, 2):print("*" * i)for i in range(1, 9):print(f'{i}\t{i ** 2}\t{i **3}') # 格式划输出total = 0
for i in range(1, 101):total += i
print(total)a = 0
for i in range(1, 101, 2):a += i
print(a)# 找出100 - 999 之间的水仙花数for i in range(100, 1000):if i == (i // 100) ** 3 + (i // 10 % 10) ** 3 + (i % 10) ** 3:print(i)# 输入一个数,判断这个数是不是质数
num = int(input("num="))
# 假设输入的num是一个质数,将布尔值赋值为True
is_prime = True
for i in range(2, num):# 如果在2 - n-1之间找到了num的因子if num % i == 0:# 不是质数就将对应的布尔值赋值为Falseis_prime = Falsebreak  # 跳出整个循环
if is_prime:print(f"{num}是质数")
else:print (f"{num}不是质数")# 嵌套for循环,
# 输出1 - 100之间的所以质数
for num in range(2, 100):is_prime = Truefor i in range(2, num):# 如果在2 - n-1之间找到了num的因子if num % i == 0:# 不是质数就将对应的布尔值赋值为Falseis_prime = Falsebreak  # 跳出整个循环if is_prime:print(num)

while循环

语法:
while 循环条件(产生布尔值的表达式)语句1语句2语句3...条件如果成立,就执行循环体中的代码;条件不成立,离开循环执行后续代码
# 1-100之和
t ,i = 0, 1
while i <= 100:t += ii += 1
print(t)# 猜数据小游戏 - 计算机产生一个1-100随机数让人来猜,人输入自己猜的数字,计算机会提示人"大一点"、"小一点"、"猜中了",如果没有猜中游戏继续,如果猜中了游戏结束,如果猜了7次以上,计算机提示"智商拙计"。
import random
answer = random.randrange(1, 101)
counter = 0
while True:counter += 1thy_answer = int(input("请输入:"))if thy_answer > answer:print("小一点")elif thy_answer < answer:print("大一点")else:print("恭喜你猜中了")breakif counter > 7:print("温馨提示:智商余额不足!!!")
print("游戏结束")

循环实战项目

  1. 输出一个乘法口诀表(九 九 表)
for i in range(1, 10):for a in range(1, i+1):print(f"{a} × {i} = {i * a}", end="\t")print()
  1. 输入两个正整数,求它们的最大公约数和最小公倍数
x = int(input("x = "))
y = int(input("y = "))z = x if x <= y else y
for i in range(z, 0, -1):if x % i == 0 and y % i == 0:print(f"{x}和{y}的最大公约数是{i}")print(f"{x}和{y}的最小公倍数数是{x * y // z}")break
  1. 输入10个数,计算出算术平均值
total = 0
counter = 0
while counter < 10:counter += 1a = float(input(f"请输入第{counter}个数:"))total += a
average = total / counter
print(f"这{counter}个数的平均值是{average:.2f}")
  1. 输入两个正整数n和k,n >= k,计算排列数和组合数
n = int(input("输入一个正整数:"))
k = int(input("输入一个正整数:"))
N = K = K1 = 1
if n <= k:n, k = k, n
for a in range(1, n + 1):N *= a
for b in range(1, k + 1):K *= b
for c in range(1, n - k + 1):K1 *= c
A = N // K1
C = N // (K * K1)
print(f"A({n},{k}) = {A}")
print(f"C({n},{k}) = {C}")
  1. 百钱百鸡
# 穷举法:
for x in range(21):for y in range(34):z = 100 - x - yif 5 * x + 3 * y + z // 3 == 100 and z % 3 == 0:print(f'公鸡{x}只、\t母鸡{y}只、\t小鸡{100-x-y}只')
  1. 五人分鱼
"""
有ABCDE五个人去捕鱼,捕完鱼太累倒头睡觉。
第二天,A第一个醒过来,他把鱼分成5份,扔掉多余的1条,拿走自己的一份;
B第二个醒过来,他以为鱼还没有分过,把剩下的鱼分成5份,扔掉多余的1条,拿走自己的一份;
C、D、E依次醒过来,都是按照上面的方法,把鱼分成5份,扔掉多余的1条,拿走自己的一份。
问,他们最少捕了多少条鱼?
"""fish = 1# 列举所有的可能性找到正确答案
while True:total, enough = fish, True# 模拟分鱼for _ in range(5):if (total - 1) % 5 == 0:total = (total - 1) // 5 * 4else:enough = Falsebreakif enough:breakfish += 1print(f'最少要{fish}条鱼')
  1. 找完美数
# example05 -找出10000以内的完美数。
# 完美数:如果一个数等于除自身以外所有因子的和,那么这个数就叫完美数。
# 6= 1 +2 +3for i in range(2, 10001):x = 1for j in range(2, i):if i % j == 0:x += jif i == x:print(f"{i}是完美数")
  1. CRAPS赌博游戏
"""
CRAPS赌博游戏-摇两颗色子
玩家摇色子,如果第一次摇出了7点或11点,玩家胜;
如果摇出2点、3点、12点,庄家胜;其他情况,游戏继续;
玩家重新摇色子,如果摇出了第一次摇的点数,玩家胜;如果摇出了7点,庄家胜;其他情况,游戏继续,直到分出胜负。
1.把游戏的场景模拟出来,输出玩家胜还是庄家胜;
2.玩家一开始有1000元,每次玩的时候下注,赢了获得对应的注码;输了就输掉对应的注码;
3.游戏结束的条件是玩家破产。"""import randomBets = 1000
while Bets > 0:print(f"\n你的总资产为:{Bets}元")debt_money = 0while debt_money <= 0 or debt_money > Bets:debt_money = int(input("请下注:"))a = random.randrange(1, 7)b = random.randrange(1, 7)print(f"第一个色子a:{a},第一个色子b:{b},总点数{a + b}")if a + b == 7 or a + b == 11:Bets += debt_moneyprint(f"恭喜你,你赢了,注码加{debt_money},现有注码{Bets}")elif a + b == 2 or a + b == 3 or a + b == 12:Bets -= debt_moneyprint(f"对不起,你输了,注码减{debt_money},现有注码{Bets}")else:passwhile True:c = random.randrange(1, 7)d = random.randrange(1, 7)print(f"第一个色子c:{c},第一个色子d:{d},总点数{c + d}")if c + d == a + b:Bets += debt_moneyprint(f"恭喜你,你赢了,注码加{debt_money},现有注码{Bets}")breakelif c + d == 7:Bets -= debt_moneyprint(f"对不起,你输了,注码减{debt_money},现有注码{Bets}")breakelse:pass
print("你已经破产了,欢迎下次光临!!!")

week1-Python学习总结相关推荐

  1. python学习笔记目录

    人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...

  2. pygame是python的一个库吗,python学习pygame,,基本库导入impor

    python学习pygame,,基本库导入impor 基本库导入 import pygame import sys from pygame.locals import * 初始化 pygame.ini ...

  3. python科学计数法转换_对比Python学习Go 基本数据结构

    公众号文章不方便更新,可关注底部「阅读原文」博客,文章随时更新. 本篇是「对比 Python 学习 Go」[1] 系列的第三篇,本篇文章我们来看下 Go 的基本数据结构.Go 的环境搭建,可参考之前的 ...

  4. python学习------tab补全

    python学习------tab补全   python也可以进行tab键补全 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #!/usr/bin/env  ...

  5. Python学习day5作业-ATM和购物商城

    Python学习day5作业 Python学习day5作业 ATM和购物商城 作业需求 ATM: 指定最大透支额度 可取款 定期还款(每月指定日期还款,如15号) 可存款 定期出账单 支持多用户登陆, ...

  6. Python学习系列(六)(模块)

    Python学习系列(六)(模块) Python学习系列(五)(文件操作及其字典) 一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: ...

  7. 最新Python学习项目Top10!

    作者 | Mybridge 译者 | Linstancy 整理 | Jane 出品 | AI科技大本营 [导读]过去一个月里,我们对近1000个Python 学习项目进行了排名,并挑选出热度前10的项 ...

  8. 200页!分享珍藏很久的Python学习知识手册(附链接)

    这是之前入门学习Python时候的学习资料,非常全面,从Python基础.到web开发.数据分析.机器学习.深度学习.金融量化统统都有,该手册是HTML版本,左侧是目录,可以点击,右侧是对目录知识点的 ...

  9. Python学习系列(五)(文件操作及其字典)

    Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件      在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...

  10. Python学习01 Hello World

    Python学习之Hello World 准备工作 去官网http://www.python.org/ 下载python的安装包: http://www.python.org/download/ 当前 ...

最新文章

  1. [LeetCode] 142. Linked List Cycle II
  2. 技术解析系列 PouchContainer Goroutine Leak 检测实践
  3. FAGLF101 应收(付)重组配置和操作
  4. 第一章 计算机系统概述 1.2.2 各硬件部分的介绍 [计算机组成原理笔记]
  5. 初识多线程之基础知识与常用方法
  6. PCB设计之:必知的PCB设计八大误区
  7. 选择FreeBSD的理由?欢迎新人观看^_^
  8. Kubernetes入门——k8s概念和架构
  9. Hough变换检测圆
  10. 通达信报计算机内存不足,导入通达信股票数据至内存数组中的方法和代码
  11. input和output哪个是充电_Angular2中Input和Output用法及示例
  12. 使用SpringBoot连接Access数据库
  13. 三星S5660刷机及Root
  14. 关于SAP的用户出口
  15. 云音乐vue开发日记
  16. 2058 笨拙的手指
  17. 高速破解wifi 使用airolib-ng
  18. linux C 遍历目录及其子目录 opendir -> readdir -> closedir
  19. web框架详解之 tornado 四 模板引擎、session、验证码、xss
  20. B1030 (完美数列)

热门文章

  1. CAS-自定义CAS Server端登录页面
  2. SNS 游戏中社区 Server 和游戏 Server 一种数据交互的策略
  3. SQL 通配符及其使用
  4. 计算机网络的基,计算机网络基.doc
  5. QQ2013 版本号 3037
  6. [美格2290][Android11]常用的framework修改
  7. 自动化办公系统(整理中)
  8. 好文转载 【五一创作】自动驾驶技术未来大有可为
  9. java application.doevents_Application.DoEvents()的使用
  10. 【嵌入式开发板】迅为iTOP-4412开发板板及资料介绍