目录
2.折纸上月球:地球和月球最短距离为363300公里,一张A4纸0.088mm,问需要折多少下才能到达月球?
4. 如果篮球从某一高度落下,每次落地后反弹回原来高度的一半再落下。那么球在第10次落地时,共经过多少米呢? 第10次反弹多高?
5.我国现有13亿人口,设每年增长0.8%,编写程序,计算多少年后达到26亿?
8、星号三角形:输入一个奇数N,输出由星号字符组成的等边三角形,要求:第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。
9.求1~100之间能被7整除,但不能同时被5整除的所有整数 。
10.输出“水仙花数”。所谓水仙花数是指1个3位的十进制数,其各位数字的立方和等于该数本身。例如:153是水仙花数,因为153=1+125+27。
12.百元买百鸡。假定小鸡每只5角,公鸡每只2元,母鸡每只3元,编程求解购鸡方案。
15.给用户9次机会,猜1-10个数字随机猜数字,如果随机的数字和用户的数字一致则表示正确,如果不一致则表示错误.
16.要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合规则,打印出不符合的原因,并提示从新输入~
2.切片的用法:现有字符串如下:words = “abcdefghi” 请使用切片提取出ceg
3.做一个简单的用户信息管理系统:提示用户依次输入姓名,年龄和爱好,并且在输入完成之后,一次性将用户输入的数据展示出来。
1.将一些朋友姓名存储在一个列表中,并命名为names。依次访问该列表中的每个元素,将每个朋友的姓名都打印出来
2.继续使用上一个的列表,为每人打印一条消息。每条消息都包含相同的问候语,但抬头为相应朋友的姓名
4.请创建一个列表,其中包含至少3个你想邀请的人;然后,使用这个列表打印消息,邀请这些人来与你共进晚餐
7.以完成练习6时编写的程序为基础,在程序末尾添加一行代码,打印一条你只能邀请两位嘉宾共进晚餐的消息。
8.想出至少5个你渴望去旅游的地方。 将这些地方存储在一个列表中,并确保其中的元素不是按字母顺序排列的。 按原始排列顺序打印该列表。
9.使用len()打印一条消息,指出你邀请了多少位嘉宾来与你共进晚餐。
11.有一个列表,判断列表中的每一个元素是否以s或e结尾,如果是,则将其放入一个新的列表中,最后输出这个新的列表
12.现有a=[1,2,3,4,5,6],用多种方式实现列表的反转,并写出推导过程
13.有两个列表lst1=[11,22,33],lst2=[22,33,44],获取内容相同的元素
14.现在有8位老师,3个办公室,要求8位老师随机分配到三个办公室中
16.修改列表:lst = [1, [4, 6], True] 请将列表里所有数字修改为原来的两倍
17.列表lst内容如下:lst = [2,5,6,7,8,9,2,9,9]
18.列表lst内容如下: lst = [2,5,6,7,8,9,2,9,9]
19.在一行输入多个好友的名字,空格隔开,然后把他们转为列表,接着输入要删除的好友名字,删除这个好友
20.按分数排名从高到低输入3个以上学生名字,空格隔开,将他们转为列表,并淘汰分数最低的3个,输出新列表
1.求30000以内的“的士数”:存在两组不同的a**3+b**3等于其本身的数
一、Python简介与工具安装(pass)
1.Python简介
2.Python解释器安装
3.PyCharm开发工具安装
4.Python前篇-计算机基本组成
5.Python前篇-互联网软件思想解读
6.Python前篇-程序语言与基础补课
二、Python函数与变量引用
7.第一个函数print
print(520)
print(11.2)
print('hello')
print("hello")
print(1-3)
print('my', 'name', 'is caiyin')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
520
11.2
hello
hello
-2
my name is caiyin
8.转义字符的使用
print('hello\nword') #\n表示换行显示后面的内容
print('hello\tword') #\t相当于tab
print('hello\rword') #覆盖\r前的所有内容
print('hello\bword') #\b相当于按一次删除键
#字符串中存在\ '等字符,前面加\输出原字符
print('http:\\\\www.baidu.com')
print('小明说:\'大家好,我是小明\'')
print(r'hello\nword') #开头加r,让转义字符失效,输出原字符串
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
hello
word
hello word
word
hellword
http:\\www.baidu.com
小明说:'大家好,我是小明'
hello\nword
9.标识符与保留字
import keyword #将保留字从库中导出
print(keyword.kwlist)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
['False', 'None', 'True', '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']
10.Python中的变量
变量是内存中一个带标签的盒子,把我们需要的数据放进去。
格式:变量名 数值运算符 值
变量由三部分组成:
标识符:表示对象所存储的内存地址,使用内置函数id(obj)来获取
类型 :表示对象的数据类型,使用内置函数type(obj)来获取
值:表示对象所存储的具体数据,使用print(obj)对值进行打印输出
name = 'caiyin'
print(name)
print('标识',id(name))
print('类型',type(name))
print('值',name)
x,y = 1,2
print(x-y)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
caiyin
标识 2819537975792
类型 <class 'str'>
值 caiyin
-1
11.变量的多次赋值
每一次赋值后,变量会指向一个新的内存空间。
name = 'james'
print(name)
name = 'Peter'
print(name)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
james
Peter
三.Python的数据类型使用
12.Python中的常用数据类型
int 整型 例:100
float 浮点型 例:2.33
bool 布尔型 True, False
str 字符串 '让学习成为一种享受'
a = 99
b = 1.33
c = True
d = 'hello'
print(a, type(a))
print(b, type(b))
print(c, type(c))
print(d, type(d))
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
99 <class 'int'>
1.33 <class 'float'>
True <class 'bool'>
hello <class 'str'>
13.Python的进制运算
print('十进制', 114)
print('二进制', 0b10011101) #0b表示后面的数是二进制,print函数将其转为十进制输出
print('八进制', 0o145) #0o表示后面数字是八进制
print('十六进制', 0x1EF54656) #0x表示后面数字为十六进制
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
运行结果:
十进制 114
二进制 157
八进制 101
十六进制 519390806
14.Python的浮点类型
a = 1.07678
print(a,type(a))
c = 1.1
d = 2.2
print(c+d)
from decimal import Decimal
print(Decimal('1.1')+Decimal('2.2'))
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
运行结果:
1.07678 <class 'float'>
3.3000000000000003
3.3
15.Python的布尔类型
a = True
b = False
print(a, type(a))
print(b, type(b))
print(a+1) #True=1
print(b+1) #False=0
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
True <class 'bool'>
False <class 'bool'>
2
1
16.Python的字符串类型
字符串或串(string)是由数字、字母、下划线组成的一串字符。
字符串被称为不可变的字符序列,可以使用单引号、双引号、三引号来定义' ' " " ''' ''' “”“ ”“”
单引号和双引号定义的字符串必须在同一行
三引号定义的字符串可以连续分布在多行中
s1 = '跟james学Python,月薪过万'
s2 = "跟james学Python,月薪过万"
s3 = '''跟james学Python,
月薪过万'''
s4 = """跟james学Python,
月薪过万"""
print(s1, type(s1))
print(s2, type(s2))
print(s3, type(s3))
print(s4, type(s4))
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
跟james学Python,月薪过万 <class 'str'>
跟james学Python,月薪过万 <class 'str'>
跟james学Python,
月薪过万 <class 'str'>
跟james学Python,
月薪过万 <class 'str'>
17.数据类型的转换
函数名 作用 注意事项 案例
str() 将其他数据类型转换为字符串 也可用引号转换 str(123) '123'
int() 将其他数据类型转换为整数 文字类和小数无法转换 int(123)
浮点数转换为整数,抹零取整 int(9.8)
float() 将其他数据类型转换为浮点数 文字类无法转浮点型 float('9.9')
整数转浮点数,末尾为.0 float(9)
name = 'caiyin'
age = 35
print(type(name), type(age), type(str(age)))
print('我是'+name+',今年'+str(age)+'岁') #+号起连接符作用
#将其他数据类型转换为字符串
a = 9
b = 18.8
c = False
print(type(a), type(b), type(c))
print(str(a), str(b), str(c))
#将其他数据类型转换为整型
a1 = '145'
f1 = 76.8
a2 = '77.8'
ff = True
a3 = 'caiyin'
print(int(a1), type(int(a1)))
print(int(f1), type(int(f1)))
# print(int(a2), type(a2)) #会报错,字符串里的数是浮点数不能转为整型
print(int(ff), type(int(ff)))
# print(int(a3), type(int(a3))) #会报错,文本类无法转为整型
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
<class 'str'> <class 'int'> <class 'str'>
我是caiyin,今年35岁
<class 'int'> <class 'float'> <class 'bool'>
9 18.8 False
145 <class 'int'>
76 <class 'int'>
1 <class 'int'>
18.其他类型数据转为float
s1 = '13.3'
s2 = '45'
ff = True
s3 = 'caiyin'
i = 67
print(type(s1), type(s2), type(ff), type(s3), type(i))
print(float(s1), type(float(s1)))
print(float(s2), type(float(s2)))
print(float(ff), type(float(ff)))
#print(float(s3), type(float(s3))) #会报错,字符串是非数字无法转为浮点型
print(float(i), type(float(i)))
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
<class 'str'> <class 'str'> <class 'bool'> <class 'str'> <class 'int'>
13.3 <class 'float'>
45.0 <class 'float'>
1.0 <class 'float'>
67.0 <class 'float'>
19.Python中的注解
单行注释:以#开头,换行结束
多行注释:并没有单独的多行注释标记,将一对三引号之间的代码作为多行注释
中文编码声明注释:#coding:gbk
x = 1
y = 2
# 打印x与y相加的结果
'''
这是一个注释
你好
打印x+y的结果
'''
print(x+y)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
3
20.input函数的简单使用
input函数 作用:接收来自用户的输入
返回值类型:输入值的类型为str
值的存储:使用等号=对输入的值进行存储
str = input('请输入你的名字:')
print(str)
#
'''
1.打印(请输入你的名字:)
2.接收键盘输入内容
3.将内容传递给变量str
'''
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
运行结果:
请输入你的名字:caiyin
caiyin
21.input函数的高级使用
# 从键盘输入两个整数,并计算它们的和
x = int(input('请输入一个整数:'))
# x = int(x)
y = int(input('请输入另一个整数:'))
# y = int(y)
print(type(x), type(y))
print(x+y)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
请输入一个整数:33
请输入另一个整数:66
<class 'int'> <class 'int'>
99
四.Python的运算符实战
22.Python的算术运算符
Python中的常用运算符有:算术运算符、赋值运算符、比较运算符、布尔运算符
其中算术运算符分为:标准算术运算符、取余运算符、幂运算符
print(1+3) # 加法运算
print(2-3) # 减法运算
print(3*3) # 乘法运算
print(4/8) # 除法运算
print(11//2) # 整除运算
print(11%2) # 取余运算
print(6**6) # 次方运算
print(9//4)
print(-9//4) # 整除结果为负数时,向下取整
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
4
-1
9
0.5
5
1
46656
2
-3
23.赋值运算符
# 运算顺序从右到左
i = 3+4
print(i)
a=b=c=33
print(a, id(a))
print(b, id(b))
print(c, id(c))
a = 35
a += 50
print(a)
a -= 66
print(a)
a *= 6
print(a)
a /= 2
print(a, type(a))
#解包赋值
a,b,c = 12,33,66
print(a,b,c)
a,b = 33,66
print(a,b)
a,b = b,a
print(a,b)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
7
33 3120762848496
33 3120762848496
33 3120762848496
85
19
114
57.0 <class 'float'>
12 33 66
33 66
66 33
24.比较运算符
> < >= <= !=
== : 对象value值的比较
is, is not:对象ID的比较
a,b = 33,66
print('a大于b吗:', a>b)
print('a小于b吗:', a<b)
print('a大于等于b吗:', a>=b)
print('a小于等于b吗:', a<=b)
print('a等于b吗:', a==b)
print('a不等于b吗:', a!=b)
a = 12
b = 12
print(a is b) #比较value值
a = [1,2,3,4]
b = [1,2,3,4]
print(a is b) #比较地址ID
print(a is not b)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
a大于b吗: False
a小于b吗: True
a大于等于b吗: False
a小于等于b吗: True
a等于b吗: False
a不等于b吗: True
True
False
True
25.布尔运算符
''' (1)and的返回结果:从左到右,如果结果为真,返回最后一个真;如果结果为假,返回第一个假
(2)or的返回结果:从左到右,如果结果为真,返回遇到的第一个真值;如果结果为假,返回最后一个假值'''
a,b = 15,20
print('--------and--------')
print(a==15 and b==20)
print(a==19 and b==20)
print(a==15 and b==23)
print(a==22 and b==23)
print(a and b)
print('--------or--------')
print(a==15 or b==20)
print(a==19 or b==20)
print(a==15 or b==23)
print(a==22 or b==23)
print(a or b)
print('--------in与not in--------')
ks = 'my name is caiyin'
print('m' in ks)
print('k' in ks)
print('--------not--------')
ff = True
ss = False
print(not ff)
print(not ss)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
--------and--------
True
False
False
False
20
--------or--------
True
True
True
False
15
--------in与not in--------
True
False
--------not--------
False
True
26.位运算符
与运算:两个二进制数对应的位都为1,结果为1,反之结果为0
或运算:两个二进制数对应的位都为0,结果为0,反之结果为1
左位移:高位溢出,低位补0
右位移:高位补0,低位截断
print(4&8) # 按位与&,只有同时为1结果才为1
print(4|8) # 按位或|。只有同时为0结果才为0
print(4<<1) # 左移1位,相当于乘2
print(4>>1) # 右移1位,相当于除以2
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
运行结果:
0
12
8
2
27.运算符的优先级
算术运算符>赋值运算符>布尔运算符>比较运算符>位运算符
28.程序的组织结构-顺序结构
29.对象的布尔值
Python中一切皆对象,所有对象都有一个布尔值,获取对象的布尔值用内置函数 bool()
以下对象布尔值为False:False、数值0、None、空字符串、空列表、空元组、、空字典、空集合
其它对象布尔值均为True
五.程序的组织结构
30.选择结构-单分支
money = 10000
draw = int(input('请输入您要取的金额:'))
if money >= draw:
money = money-draw
print('取款成功,您的余额为:', money)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
请输入您要取的金额:8000
取款成功,您的余额为: 2000
31.选择结构-双分支
两个选择必然会执行一个
number = int(input('请输入一个整数:'))
if number%2 == 0:
print(number, '是一个偶数')
else:
print(number, '是一个奇数')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
请输入一个整数:15
15 是一个奇数
32.选择结构-多分支
mystar = int(input('当前用户的星数:'))
if mystar>=0 and mystar<10:
print('当前段位是青铜')
elif mystar>=10 and mystar<30:
print('当前段位是白银')
elif mystar>=30 and mystar<50:
print('当前段位是黄金')
elif mystar>=50 and mystar<70:
print('当前段位是铂金')
elif mystar>=70 and mystar<80:
print('当前段位是钻石')
elif mystar>=80 and mystar<90:
print('当前段位是星耀')
elif mystar>=90 and mystar<=100:
print('当前段位是王者')
else:
print('错误的信息')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
当前用户的星数:93
当前段位是王者
33.嵌套if的使用
mystar = int(input('当前用户的星数:'))
sex = input('请输入你的性别:')
if mystar>=0 and mystar<10:
print('当前段位是青铜')
if sex == '男':
mystar += 1
else:
mystar += 2
print('当前星数为:', mystar)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
当前用户的星数:9
请输入你的性别:女
当前段位是青铜
当前星数为: 11
34.条件表达式
a = int(input('请输入一个整数:'))
b = int(input('请输入另一个整数:'))
if a >= b:
print('a大于等于b')
else:
print('a小于b')
# 条件表达式:
print(str(a)+'大于等于'+str(b) if a>=b else str(a)+'小于'+str(b))
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
请输入一个整数:13
请输入另一个整数:14
a小于b
13小于14
六.Python的循环控制语句
35.Python的pass语句
VIP = input('你是我们的VIP客户吗? Y/N: ')
if VIP == 'Y':
pass
else:
pass
high = int(input('请输入您的身高:'))
if high: # 相当于进行布尔运算,判断变量值为True还是False
print(high)
else:
print('身高为'+str(high))
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
你是我们的VIP客户吗? Y/N: Y
请输入您的身高:0
身高为0
36.Python的range()函数
x = [1,2,3,4,5]
print(list(x)) # 打印列表时要加list
r = range(10) # 定义一个从0开始,9结束,间隔为1的列表
print(list(r))
r = range(2,10) # 定义一个从2开始,9结束,间隔为1的列表
print(list(r))
r = range(1,10,2) # 定义一个从1开始,9结束,间隔为2的列表
print(list(r))
print(3 in r)
print(2 in r)
print(3 not in r)
print(2 not in r)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
[1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7, 8, 9]
[1, 3, 5, 7, 9]
True
False
False
True
37.Python中的while循环结构
判断N+1次,条件为True执行1次
x = 7
while x < 10:
print(x, type(x))
x += 1
print('循环结束')
# 计算1+2+3+4+5+6+7+8+9
x = 0
sum = 0
while x < 10:
sum = sum+x
x += 1
print('结果为:'+str(sum))
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
7 <class 'int'>
8 <class 'int'>
9 <class 'int'>
循环结束
结果为:45
38.while循环练习
# 计算0-10所有偶数的和
x = 0
sum = 0
while x <= 10:
if x%2 ==0: # if not bool(x%2):
sum = sum+x
x += 1
print('0-10所有偶数的和为:', sum)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
0-10所有偶数的和为: 30
39.Python中的for-in循环结构
for a in 'hello':
print(a)
# 循环体中没有变量时,可用_代替自定义变量
for _ in range(3):
print('hello')
# 计算0-10中所有偶数的和
sum = 0
for i in range(11):
if i%2 ==0:
sum = sum+i
i += 1
print('0-10所有偶数的和为:', sum)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
h
e
l
l
o
hello
hello
hello
0-10所有偶数的和为: 30
40.break流程控制语句
# 模拟ATM取钱输入密码,输入正确直接退出循环,错误不能超过3次
for i in range(3):
password = input('请输入密码:')
if password == '666666':
print('密码正确。')
break
else:
print('密码错误。')
times = 0
while times < 3:
password = input('请输入密码:')
if password == '666666':
print('密码正确。')
break
else:
print('密码错误。')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
请输入密码:123456
密码错误。
请输入密码:333333
密码错误。
请输入密码:111
密码错误。
请输入密码:666666
密码正确。
41.coutinue流程控制语句
# 输出1-20中5的倍数
for i in range(1,21):
if i%5 != 0:
continue
print(i)
'''相当于
for i in range(1,21):
if i%5 == 0:
print(i)
'''
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
运行结果:
5
10
15
20
42.else的使用
# 模拟ATM机取款输入密码,错误次数不能超过3次
for i in range(3):
pwd = input('请输入密码:')
if pwd == '666666':
print('密码正确。')
break
else:
print('密码错误。')
else:
print('错误次数达到上限。')
ii = 0
while ii < 3:
pwd = input('请输入密码:')
if pwd == '666666':
print('密码正确。')
break
else:
print('密码错误。')
ii += 1
else:
print('错误次数达到上限。')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
请输入密码:123
密码错误。
请输入密码:222
密码错误。
请输入密码:333
密码错误。
错误次数达到上限。
请输入密码:666666
密码正确。
43.嵌套循环的使用
# 打印一个3行4列的星号矩阵
for i in range(3):
for j in range(4):
print('*', end='\t')
print()
# 打印99乘法表
for i in range(1,10):
for j in range(1,i+1):
print(i,'*',j,'=',i*j,end=' ')
print()
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
运行结果:
* * * *
* * * *
* * * *
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36
7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49
8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64
9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81
44.二重循环的break和continue使用
for i in range(5):
for j in range(1,11):
if j%2 ==0:
continue
print(j,end='\t')
print()
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
1 3 5 7 9
1 3 5 7 9
1 3 5 7 9
1 3 5 7 9
1 3 5 7 9
七.循环练习
1.输入一个数,求这个数的阶乘:
# 1.输入一个数,求这个数的阶乘:
s = 1
n = int(input('请输入一个整数:'))
for i in range(1,n+1):
s = s*i
print(n,'的阶乘为:',s)
s = 1
n = int(input('请输入一个整数:'))
i = 1
while i <= n:
s = s*i
i += 1
print(n,'的阶乘为:',s)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
请输入一个整数:7
7 的阶乘为: 5040
请输入一个整数:7
7 的阶乘为: 5040
2.折纸上月球:地球和月球最短距离为363300公里,一张A4纸0.088mm,问需要折多少下才能到达月球?
'''
2.折纸上月球:地球和月球最短距离为363300公里,一张A4纸0.088mm,问需要折多少下才能到达月球?
'''
s = 0.088
n = 0
while 1:
if s >= 363300*1000*1000:
break
s *= 2
n += 1
print('需要折',n,'次')
from itertools import repeat
s = 0.088
n = 0
for _ in repeat(None):
if s >= 363300*1000*1000:
break
s = s*2
n = n+1
print('需要折',n,'次')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
需要折 42 次
需要折 42 次
3.求和 求s= a + aa + aaa + … + aa…a 的值(最后一个数中 a 的个数为 n ),其中 a 是一个1~9的数字,例如: 2 + 22 + 222 + 2222 + 22222 (此时 a=2 n=5 )
输入:一行,包括两个整数,第1个为a,第2个为n(1 ≤ a ≤ 9,1 ≤ n ≤ 9),以英文逗号分隔。
输出:一行,s的值。
1.eval函数的语法及用法
(1)语法:eval(expression)
(2)作用:接收运行一个字符串表达式,返回表达式的结果值。
2.实例
(1)简单的计算用法
(2)与其它函数结合使用,比如结合input函数使用
(3)与while语句、input函数结合使用。
(4)与input函数以及if条件语句、while语句一起结合使用。
'''
3.求和 求s= a + aa + aaa + … + aa…a 的值(最后一个数中 a 的个数为 n ),其中 a 是一个1~9的数字,例如: 2 + 22 + 222 + 2222 + 22222 (此时 a=2 n=5 )
输入:一行,包括两个整数,第1个为a,第2个为n(1 ≤ a ≤ 9,1 ≤ n ≤ 9),以英文逗号分隔。
输出:一行,s的值。
'''
a,n = eval(input('请依次输入两个1-9的整数,用逗号分隔:'))
sum = a
s = 0
total = 0
for i in range(n):
sum = s*10+a
s = sum
total += sum
print('结果为:',total)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
请依次输入两个1-9的整数,用逗号分隔:5,9
结果为: 617283945
4. 如果篮球从某一高度落下,每次落地后反弹回原来高度的一半再落下。那么球在第10次落地时,共经过多少米呢? 第10次反弹多高?
输入:输入一个整数h,单位是米,表示球的初始高度。
输出:输出包含两行:
第1行:到球第10次落地时,一共经过的距离。
第2行:第10次弹跳的高度。
'''
4.如果篮球从某一高度落下,每次落地后反弹回原来高度的一半再落下。那么球在第10次落地时,共经过多少米呢? 第10次反弹多高?
输入:输入一个整数h,单位是米,表示球的初始高度。
输出:输出包含两行:
第1行:到球第10次落地时,一共经过的距离。
第2行:第10次弹跳的高度。
'''
s = 0
h = float(input('请输入篮球的初始高度(单位:米):'))
for i in range(10):
s += h
h /= 2
print('第10次落地时,共经过',s,'米')
print('第10次弹跳高度为:',h,'米')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
请输入篮球的初始高度(单位:米):9.3
第10次落地时,共经过 18.581835937500003 米
第10次弹跳高度为: 0.00908203125 米
5.我国现有13亿人口,设每年增长0.8%,编写程序,计算多少年后达到26亿?
'''
5.我国现有13亿人口,设每年增长0.8%,编写程序,计算多少年后达到26亿?
'''
s = 13
n = 0
from itertools import repeat
for _ in repeat(None):
if s >= 26:
break
s = s*(1+0.008)
n += 1
print(n,'年后人口达到26亿。')
s = 13
n = 0
while 1:
if s >= 26:
break
s = s*(1+0.008)
n += 1
print(n,'年后人口达到26亿。')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
87 年后人口达到26亿。
87 年后人口达到26亿。
6.打印99乘法表
# 6.打印99乘法表
for i in range(1,10):
for j in range(1,i+1):
print(f'{i}*{j}={i*j}',end=' ')
print()
print('-'*70)
'''使用列表推导式'''
print('\n'.join([' '.join([f'{i}*{j}={i*j}' for j in range(1,i+1)]) for i in range(1,10)]))
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
运行结果:
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
----------------------------------------------------------------------
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
7.求1!+2!+3!+4!+5!的和
'''
7.求1!+2!+3!+4!+5!的和
'''
sum = 0
n = 1
for i in range(1,6):
sum = sum+n*i
n *= i
print('5个数的阶乘之和为:',sum)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
5个数的阶乘之和为: 153
8、星号三角形:输入一个奇数N,输出由星号字符组成的等边三角形,要求:第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。
'''
8、星号三角形:输入一个奇数N,输出由星号字符组成的等边三角形,要求:第1行1个星号,第2行3个星号,第3行5个星号,依次类推,
最后一行共N的星号。
'''
N = int(input('请输入一个奇数:'))
for i in range(N-N//2+1):
for j in range(1,N-i):
print(end=' ')
for k in range(N-i,N+i-1):
print('*',end=' ')
print('')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
请输入一个奇数:9
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
9.求1~100之间能被7整除,但不能同时被5整除的所有整数 。
'''
9.求1~100之间能被7整除,但不能同时被5整除的所有整数 。
'''
for i in range(1,101):
if i%7 == 0 and i%5 != 0:
print(i,end='\t')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
7 14 21 28 42 49 56 63 77 84 91 98
10.输出“水仙花数”。所谓水仙花数是指1个3位的十进制数,其各位数字的立方和等于该数本身。例如:153是水仙花数,因为153=1+125+27。
'''
10.输出“水仙花数”。所谓水仙花数是指1个3位的十进制数,其各位数字的立方和等于该数本身。例如:153是水仙花数,因为153=1+125+27。
'''
for i in range(100,1000):
ge = i%10
shi = i//10%10
bai = i//100
if ge**3+shi**3+bai**3 == i:
print(i,end='\t')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
153 370 371 407
11.求平均分
'''求平均分'''
score = [66,92,89,78,95,83]
s = 0
for i in score:
s += i
print('平均分为:',int(s/len(score)))
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
平均分为: 83
12.百元买百鸡。假定小鸡每只5角,公鸡每只2元,母鸡每只3元,编程求解购鸡方案。
'''
12.百元买百鸡。假定小鸡每只5角,公鸡每只2元,母鸡每只3元,编程求解购鸡方案。
'''
# 三种鸡的价格
for i in range(34):
for j in range(51):
for k in range(101):
if i + j + k == 100 and i*3+j*2+k*0.5 == 100:
print('购鸡方案:',k,'只小鸡,',j,'\t只公鸡,',i,'\t只母鸡。')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
购鸡方案: 68 只小鸡, 30 只公鸡, 2 只母鸡。
购鸡方案: 70 只小鸡, 25 只公鸡, 5 只母鸡。
购鸡方案: 72 只小鸡, 20 只公鸡, 8 只母鸡。
购鸡方案: 74 只小鸡, 15 只公鸡, 11 只母鸡。
购鸡方案: 76 只小鸡, 10 只公鸡, 14 只母鸡。
购鸡方案: 78 只小鸡, 5 只公鸡, 17 只母鸡。
购鸡方案: 80 只小鸡, 0 只公鸡, 20 只母鸡。
13.输出100以内的所有素数
'''
13.输出100以内的所有素数
'''
for i in range(2,101):
for j in range(2,i//2+1):
if i%j == 0:
break
else:
print(i,end=' ')
print()
for n in range(100,1,-1):
for i in range(2,n//2+1):
if n%i == 0:
break
else:
print(n,end=' ')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
97 89 83 79 73 71 67 61 59 53 47 43 41 37 31 29 23 19 17 13 11 7 5 3 2
14.输入一个数,判断是否为素数
'''
14.输入一个数,判断是否为素数
'''
n = int(input('请输入一个整数:'))
for i in range(2,n//2+1):
if n%i == 0:
print(n,'不是素数')
break
else:
print(n,'是素数')
print('-'*30)
n = int(input('请输入一个整数:'))
i = 2
while i <= n/2:
if n%i == 0:
print(n,'不是素数')
break
else:
i += 1
else:
print(n,'是素数')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
请输入一个整数:13
13 是素数
------------------------------
请输入一个整数:11
11 是素数
15.给用户9次机会,猜1-10个数字随机猜数字,如果随机的数字和用户的数字一致则表示正确,如果不一致则表示错误.
import random
temp = random.randint(0,11)
for i in range(1,10):
num = int(input('请输入你猜的数:'))
if num == temp:
print('恭喜你,猜对了!')
break
else:
print('猜错了,请再次尝试:')
else:
print('很遗憾,你没猜对,次数已用完。')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
请输入你猜的数:1
猜错了,请再次尝试:
请输入你猜的数:2
猜错了,请再次尝试:
请输入你猜的数:3
猜错了,请再次尝试:
请输入你猜的数:4
猜错了,请再次尝试:
请输入你猜的数:5
恭喜你,猜对了!
16.要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合规则,打印出不符合的原因,并提示从新输入~
要求:1、用户名长度6-20,用户名必须以字母开头
2、密码长度至少6位,不能为纯数字,不能有空格
username = input('请输入你的用户名:')
while 1:
if 6 <= len(username) <= 20:
if username[0].isalpha():
password = input('请输入你的密码:')
if len(password) >= 6:
if password.isdigit() == False:
if ' ' not in password:
print('登录成功!')
break
else:
print('格式错误!密码不能包含空格,请重新输入:')
else:
print('格式错误!密码不能为纯数字,请重新输入:')
else:
username = input('格式错误!用户名必须以字母开头,请重新输入:')
else:
username = input('格式错误!用户名长度为6-20位,请重新输入:')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
请输入你的用户名:5asder
格式错误!用户名必须以字母开头,请重新输入:asdqw
格式错误!用户名长度为6-20位,请重新输入:cy2lyf
请输入你的密码:555666
格式错误!密码不能为纯数字,请重新输入:
请输入你的密码:55 sd66
格式错误!密码不能包含空格,请重新输入:
请输入你的密码:55as66
八.Python的列表操作
45.列表的概念理解
变量可以存储一个元素,而列表是一个大“容器”,可以存储N多个元素,程序可以方便地对这些数据进行整体操作,列表相当于其它语言中的数组。
46.列表的创建
1.列表需要使用中括号[],元素之间使用英文的逗号进行分隔
2.调用内置函数list()
x = ['abc','ccc',25]
y = list(['abc','ccc',25])
47.列表的特点
1.列表元素按顺序有序排列
2.索引映射唯一一个数据
3.列表可以存储重复数据
4.任意数据类型混合
3.根据需要动态分配和回收内存
x = ['hello','小明',355,True]
print(x)
print(x[2],x[-2],x[3],x[-3]) '''索引从左往右是0开始,从右往左是-1开始'''
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
['hello', '小明', 355, True]
355 355 True 小明
48.列表获取指定元素的索引
x = ['abc','hello',123,False,'hello']
'''查找列表中元素的索引'''
print(x.index('abc'))
print('-'*30)
'''print(x.index('333')) 查找的元素列表中没有会报错'''
print(x.index('hello',2,5))
'''list.index('xxx',m,n)表示查找列表list中'xxx'元素,索引范围为m开始,n结尾(不包含n)'''
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
0
------------------------------
4
49.获取列表中单个元素
x = ['abc','hello',123,False,'hello']
'''0开始'''
print(x[3])
print('-'*30)
'''-1开始'''
print(x[-2])
print(x[-5])
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
False
------------------------------
False
abc
50.获取列表中多个元素
语法格式:列表名[start:stop:step]
lst = [10,20,30,40,50,60,70,80,90]
print('-----------原列表-------------')
print(lst)
print('-----从1开始,4结尾,步长为2------')
lst2 = lst[1:5:2]
print(lst2)
print('----------步长默认为1----------')
print(lst[1:5:])
print('--end位置不写,默认到列表最后1个元素--')
print(lst[1::2])
print('-start不写,当步长为正数,默认从0开始正序-')
print(lst[:5:1])
print('-start不写,当步长为负数数,默认从最后个元素开始倒序-')
print(lst[:2:-2])
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
-----------原列表-------------
[10, 20, 30, 40, 50, 60, 70, 80, 90]
-----从1开始,4结尾,步长为2------
[20, 40]
----------步长默认为1----------
[20, 30, 40, 50]
--end位置不写,默认到列表最后1个元素--
[20, 40, 60, 80]
-start不写,当步长为正数,默认从0开始正序-
[10, 20, 30, 40, 50]
-start不写,当步长为负数,默认从最后个元素开始倒序-
[90, 70, 50]
51.列表元素的查询操作
lst = [10,20,30,40,'hello']
print(10 in lst)
print(50 in lst)
print(50 not in lst)
for str in lst:
print(str,end='\t')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
True
False
True
10 20 30 40 hello
52.添加列表元素
append: 在列表的末尾添加一个元素或子列表
extend: 在列表的末尾至少添加一个元素(若添加子列表,会变为新增元素)
insert: 在列表的任意位置添加一个元素或子列表
切片: 在列表的任意位置添加至少一个元素
lst = [10,20,30]
'''在列表末尾添加元素'''
lst.append(50)
print(lst)
'''在列表末尾添加子列表'''
lst2 = ['hello','word']
lst.append(lst2)
print(lst)
'''将子列表作为元素添加到列表末尾'''
lst.extend(lst2)
print(lst)
'''在列表任意位置添加元素'''
lst.insert(2,90)
print(lst)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
[10, 20, 30, 50]
[10, 20, 30, 50, ['hello', 'word']]
[10, 20, 30, 50, ['hello', 'word'], 'hello', 'word']
[10, 20, 90, 30, 50, ['hello', 'word'], 'hello', 'word']
53.列表元素的删除操作
lst = [10,20,30,40,30,60]
'''删除列表中某个元素(从左到右第1次出现的那个)'''
lst.remove(30)
print(lst)
'''删除索引位置的第一个元素,不填索引默认删除末尾元素'''
lst.pop(1)
print(lst)
'''切片删除'''
lst[1:3] = []
print(lst)
'''删除指定索引的元素'''
del lst[1]
print(lst)
'''清空列表中所有元素'''
lst.clear()
print(lst)
'''删除列表对象'''
del lst
# print(lst) 会报错,因为lst对象已不存在
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
运行结果:
[10, 20, 40, 30, 60]
[10, 40, 30, 60]
[10, 60]
[10]
[]
54.列表元素的排序操作
常用的两种方法:
1.调用sort():列表中所有元素按从小到大顺序排列,可以指定reverse=True,进行降序排列
2.调用内置函数sorted():创建新列表,默认升序排列,可以指定reverse=True,进行降序排列
lst = [10,80,30,60,70,50]
print('-------原列表-------','\n',lst,id(lst))
'''对原列表进行排序'''
lst.sort()
print('-------升序排列-------','\n',lst,id(lst))
lst.sort(reverse=True)
print('-------降序排列-------','\n',lst)
lst.reverse()
print('-------反转列表--------','\n',lst)
'''创建新列表,默认升序'''
new_lst = sorted(lst)
print('-------新列表-------','\n',new_lst,id(new_lst))
'''对新列表降序排列'''
new_lst = sorted(lst,reverse=True)
print('-------新列表降序-------','\n',new_lst,id(new_lst))
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-------原列表-------
[10, 80, 30, 60, 70, 50] 2186902153536
-------升序排列-------
[10, 30, 50, 60, 70, 80] 2186902153536
-------降序排列-------
[80, 70, 60, 50, 30, 10]
-------反转列表--------
[10, 30, 50, 60, 70, 80]
-------新列表-------
[10, 30, 50, 60, 70, 80] 2186905218304
-------新列表降序-------
[80, 70, 60, 50, 30, 10] 2186902872000
55.列表生成式
lst = [i for i in range(1,10)]
print('-----生成1-9的列表-----','\n',lst)
lst = [i*i for i in range(1,10)]
print('-----生成1-9平方的列表-----','\n',ls