容器
1.列表list
# 容器类型
# 列表 list 类似java中的数组,表现为【元素1,元素2,元素n】
# 元组 tuple 不可变的可迭代,且有序的,表现为(元素1,元素2,......)
# 字典dict 键值对结构,键是基于hash函数实现唯一值,是无序的,表现为{"key":value}
# 集合 set,无序,不可重复,表现{1,2,3}
# 列表 相当于栈
num_list=[2.3,"56","58.33"]
print(num_list)
num_list.append(10)#入栈
print(num_list)
n1=num_list.pop()#出栈
n2=num_list.pop(0)
print(n1,n2,num_list)
num_list.insert(0,100)#插入一个数
print(num_list)
print(num_list[0])#截取列表第一个数
print(num_list[2:4])#截取第三个数到第五个数
print(num_list[1:2:2])#list[start:end:step]表示从start开始到end,步长为step进行切片
#创建一个列表lis=[0,1,2,3,4,5,6,7,8,9]
lis=[i for i in range(10)]
#取后4个数,下面两个结果是一样的,一个是按照倒叙的索引,一个是正序索引
lis_=lis[-4:]
lis_=lis[6:]
#取3、5、7、9
lis_=lis[3::2]
上面最后一个切片就用到了两个冒号,其实就是这个lis[start:end:step],对应上面的例子就是start=3,end没写就是到列表的最后,step=2,意思就是从索引为start到end,步长为step进行切片
2.元组tuple
# 元组tuple
num_tuple=(4.2,55,48,123)
print(num_tuple)
print(num_tuple[0])#输出第一个元素
num_tuple=(1,2,3,4)
print(num_tuple)
list=[1.2]
#type()可以获取一个变量的类型
print(type(num_tuple))
print(type(list))
结果为
<class 'tuple'>
<class 'list'>
3.字典dict
# 字典dict
info_dict={"name":"迪迦奥特曼","age":"18","hobby":"打怪兽"}
# info_dict["age"]+=2
info_dict['height']=1.8
# print(info_dict['weight'] 报错字典中不存在的key会报错
print(info_dict.get("weight",None))
print(info_dict.keys(),info_dict.values())
print(info_dict.items())
结果
None
dict_keys(['name', 'age', 'hobby', 'height']) dict_values(['迪迦奥特曼', '18', '打怪兽', 1.8])
dict_items([('name', '迪迦奥特曼'), ('age', '18'), ('hobby', '打怪兽'), ('height', 1.8)])
4.集合set
# 集合
num_set=(22,33,55)
print(num_set)
print(num_set[0])
print(num_set & {34,56})#报错
print(num_set | {1,2,5})#报错
s=set()
print(type(s))
结果
print(num_set & {34,56})
TypeError: unsupported operand type(s) for &: 'tuple' and 'set'
(22, 33, 55)
22
判断语句
# 分支语句
# if 条件 :
# 条件为True的语句块
n=int(input("请输入一个数:"))
if n>7:
print(n,'大于七这个还是可以')
# 如果n是小于七,则什么都不打印,即省略条件不成立的情况。
# if-else条件语句
# if 条件:
#条件为True的语句块
# else:
#条件为假的语句块
phone=input('输入你的电话号码:')
#len()函数计算字符或文本内容的长度(字符长度)
if len(phone) == 11:
print(phone,'长度合法')
else:
print(phone,"长度不足,无效")
# if-elif-else
#if 条件:
#条件为True的语句块
#elif 条件2:
#条件2为True的语句块
#else:
#条件2为False的语句块
score=float(input('请输入你的成绩:'))
if score>80:
print(score,'你的成绩是良好')
elif score>=60:
print(score,'你的成绩合格')
else:
print(score,'你的成绩不合格!')
for循环
# for循环
# for 变量名 in 可迭代的对象:
# 对变量名进行有效操作的语句
# 可迭代的对象有列表list,元组tuple,字典dict,集合set
for item in [1, 2, 3, 4]:
print(item)
for i in range(20):
print(i)
# 列表list
list = [1, 2, 3, 4, 5, 6, '迪迦奥特曼', '塞罗奥特曼', '盖亚奥特曼']
for a in list:
print(a)
# 元组tuple
tuple = (' *', ' ****', ' ******', ' ********', ' **********')
for b in tuple:
print(b)
# 字典dict
# dict={'name':'詹姆斯','age':36,'sex':'男','work':'篮球小皇帝'}
info_dict = {"name": "张三", "age": 18, "hobby": "吹牛逼"}
for c in info_dict:
print(c)
# 列表推导式
print([i for i in range(100) if i % 2 == 0])
for d in range(5):
print(d, end='\t')
# 字典推导式
# enumerate() 枚举化列表的方法, 枚举化的结果是 [ (0, 'a'), (1, 'b'), (2, 'c') ]
print({i: v for i, v in enumerate(['a', 'b', 'c'])})
while循环
#while循环
#while 条件:
#条件为True时的语句块
#修改条件中的变量值
i=0
total=0
while i<=10:
total+=i
i+=1
print('十以内的和是:',total)
#解构二
#while True:
#执行语句
#修改退出条件的变量
#判断 退出条件是成立,成立则break
i=1
total=0
while True:
if i % 2 == 0:
total+=i
i+=1
if i>100: break
print("100以内的偶数之和",total)
练习
#统计100以内个位数是2并且能够被3整除的数的个数。
sum=0
for i in range(0,100):
if i%3==0 and i%10==2:
sum+=1
print(sum)
#输入任意一个正整数,求他是几位数?
n=int(input('请输入一个数:'))
n_str=str(n)
print('%d位数'% len(n_str))
print(n_str[::-1])
var_int=int(input('输入一个正整数:'))
var_str=str(var_int)
print('%d位数' % len(var_str))
print(var_str[::-1])
#::表示按照间隔为1去取元素,负号表示逆序print(var_str[::-1])
# 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,
# 其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,
# 因为153=1的三次方+5的三次方+3的三次方。
# ----------------------------------------------------------------------
# 把任意三位数的百位、十位、个位拆解出来就好办了。
# 思路:将任意3位数除以100再向下取整,
# 即可得到百位数。将这个3位数减去(百位数*100),即可去掉百位数,然后除以10再向下取整,
# 即可得到十位数。将这个3位数除以10再取整再乘以10(得到整几百几十的数字),
# 然后拿这个3位数减去这个数字,即可得到个位数。代码如下:
import math
for i in range(100, 1000):
x = math.floor(i/100) #获得百位数
y = math.floor((i - x*100)/10) #获得十位数
z = i - math.floor(i/10) *10 #获得个位数
if i == x**3 + y**3 + z**3:
print(i, end=', ')
#打印出所有的水仙花数, 所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如: 153
# 是 ⼀个⽔仙花数, 因为
# 1³ + 5³ + 3³ 等于
# 153
import math
#引入数学运算库,添加之后就能运算数字运算
for i in range(100,1000):
#range能够产生随机数
m=math.floor(i/100)#获得百位数
n=math.floor((i-m*100)/10)#获得十位数
p=i-math.floor(i/10)*10#获得个位数
if i==(m**3)+(n**3)+(p**3):
print(i,end=',')
结果
153,370,371,407,