week1-Python学习总结
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("游戏结束")
循环实战项目
- 输出一个乘法口诀表(九 九 表)
for i in range(1, 10):for a in range(1, i+1):print(f"{a} × {i} = {i * a}", end="\t")print()
- 输入两个正整数,求它们的最大公约数和最小公倍数
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
- 输入10个数,计算出算术平均值
total = 0
counter = 0
while counter < 10:counter += 1a = float(input(f"请输入第{counter}个数:"))total += a
average = total / counter
print(f"这{counter}个数的平均值是{average:.2f}")
- 输入两个正整数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}")
- 百钱百鸡
# 穷举法:
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}只')
- 五人分鱼
"""
有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}条鱼')
- 找完美数
# 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}是完美数")
- 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学习总结相关推荐
- python学习笔记目录
人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...
- pygame是python的一个库吗,python学习pygame,,基本库导入impor
python学习pygame,,基本库导入impor 基本库导入 import pygame import sys from pygame.locals import * 初始化 pygame.ini ...
- python科学计数法转换_对比Python学习Go 基本数据结构
公众号文章不方便更新,可关注底部「阅读原文」博客,文章随时更新. 本篇是「对比 Python 学习 Go」[1] 系列的第三篇,本篇文章我们来看下 Go 的基本数据结构.Go 的环境搭建,可参考之前的 ...
- 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 ...
- Python学习day5作业-ATM和购物商城
Python学习day5作业 Python学习day5作业 ATM和购物商城 作业需求 ATM: 指定最大透支额度 可取款 定期还款(每月指定日期还款,如15号) 可存款 定期出账单 支持多用户登陆, ...
- Python学习系列(六)(模块)
Python学习系列(六)(模块) Python学习系列(五)(文件操作及其字典) 一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: ...
- 最新Python学习项目Top10!
作者 | Mybridge 译者 | Linstancy 整理 | Jane 出品 | AI科技大本营 [导读]过去一个月里,我们对近1000个Python 学习项目进行了排名,并挑选出热度前10的项 ...
- 200页!分享珍藏很久的Python学习知识手册(附链接)
这是之前入门学习Python时候的学习资料,非常全面,从Python基础.到web开发.数据分析.机器学习.深度学习.金融量化统统都有,该手册是HTML版本,左侧是目录,可以点击,右侧是对目录知识点的 ...
- Python学习系列(五)(文件操作及其字典)
Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...
- Python学习01 Hello World
Python学习之Hello World 准备工作 去官网http://www.python.org/ 下载python的安装包: http://www.python.org/download/ 当前 ...
最新文章
- [LeetCode] 142. Linked List Cycle II
- 技术解析系列 PouchContainer Goroutine Leak 检测实践
- FAGLF101 应收(付)重组配置和操作
- 第一章 计算机系统概述 1.2.2 各硬件部分的介绍 [计算机组成原理笔记]
- 初识多线程之基础知识与常用方法
- PCB设计之:必知的PCB设计八大误区
- 选择FreeBSD的理由?欢迎新人观看^_^
- Kubernetes入门——k8s概念和架构
- Hough变换检测圆
- 通达信报计算机内存不足,导入通达信股票数据至内存数组中的方法和代码
- input和output哪个是充电_Angular2中Input和Output用法及示例
- 使用SpringBoot连接Access数据库
- 三星S5660刷机及Root
- 关于SAP的用户出口
- 云音乐vue开发日记
- 2058 笨拙的手指
- 高速破解wifi 使用airolib-ng
- linux C 遍历目录及其子目录 opendir -> readdir -> closedir
- web框架详解之 tornado 四 模板引擎、session、验证码、xss
- B1030 (完美数列)
热门文章
- CAS-自定义CAS Server端登录页面
- SNS 游戏中社区 Server 和游戏 Server 一种数据交互的策略
- SQL 通配符及其使用
- 计算机网络的基,计算机网络基.doc
- QQ2013 版本号 3037
- [美格2290][Android11]常用的framework修改
- 自动化办公系统(整理中)
- 好文转载 【五一创作】自动驾驶技术未来大有可为
- java application.doevents_Application.DoEvents()的使用
- 【嵌入式开发板】迅为iTOP-4412开发板板及资料介绍