keys()、values()和items()返回的值不是真正的列表,它们不能被修改,没有append()方法
items()获取到字典的 key 和value ,组成元组
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列即键值对, 同时列出数据和数据下标,一般用在 for 循环当中。
1、创建一个名为favorite_places的字典,在这个字典中,将三个人的名字用作键,对于其中的每个人,都存储他喜欢的1〜3个地方。朋友指出他们喜欢的一个地方(input),遍历这个字典,将这个人的名字及其喜欢的所有地方打印出来
favorite_places = {'张三':['上海','北京','广州'],'李四':['九寨沟','张家界','鼓浪屿']}
place= input('请输入一个地名')
length=0
for k,v in favorite_places.items():
length += 1
for m in v :
if m==place:
print(k,v)
length=0
if length==len(favorite_places):
print('没有人喜欢这个地方')
#keys()、values()和items()返回的值不是真正的列表,它们不能被修改,没有append()方法
print(favorite_places.items()) #获取到字典的 key 和value 组成的元组字典
#输出为 dict_items([('张三', ['上海', '北京', '广州']), ('李四', ['九寨沟', '张家界', '鼓浪屿'])])
for k,v in favorite_places.items(): #items将字典转化为可遍历的元组
print(k,v)
#输出为 张三 ['上海', '北京', '广州']
# 李四 ['九寨沟', '张家界', '鼓浪屿']
2、用for、while循环打印九九乘法表
for i in range(1,10):
for j in range(1,i+1): #range函数含头不含尾
print('%d x %d = %d'%(j,i,(j*i)),end = '\t') #输出不换行,按列对齐\t
print() #以换行为结尾
#两种不同的实现方法
i = 1
while i < 10:
j = 1
while j<=i:
print('%d x %d = %d' % (j,i,(j * i)), end='\t')
j+=1
i+=1
print()
3、从键盘输入一个字符串,将小写字母全部转换成大写字母,将字符串以列表的形式输出(如果字符串包含整数,转为整型)
str1 = input('请输入一个字符串:') #接受一个字符串
list1 = [] #生成一个空列表
for i in str1: #遍历输入的字符串
if i.isdecimal() == True: #判断当前字符是否是数字 与i.isdigit()作用一样
list1.append(int(i)) #将数字转换为int类型然后插入到列表当中
else:
list1.append(i.upper()) #将当前字符转换为大写,然后追加到列表当中
print(list1)
4、随机输入8位以内的的正整数,要求:一、求它是几位数,二、逆序打印出各位数字
num = input('请输入一个8位以内数:')
if num.isdigit()==True:
if len(num) <= 8 :
print('这个数是%d位数'%len(num))
print(num[::-1])
else :
print('输入超过八位数')
else:
print('输入有误')
5、一球从n米(自己输入)高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在第10次落地时,共经过多少米?
n = int(input('请输入初始高度:'))
m = 0
for i in range(1,11):
if i == 1 : #第一次触地
m += n
else: #第二次触底是与那里高度的一半
n/=2
m+=n*2 #在累加起来
print(m)
6、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
str1 = input('请输入字符:')
zf = 0
num = 0
space = 0
other = 0
for i in str1:
if i.isalpha():
zf+=1
elif i.isdigit():
num+=1
elif i.isspace():
space+=1
else:
other+=1
print('字母的个数:%d,数字的个数:%d,空格的个数:%d,其他字符的个数:%d'%(zf,num,space,other))
7、找出名字中长度大于4的名字,组成列表打印出来,过滤掉长度大于5的字符串列表,并将剩下的转换成大写字母
names = ['Tom','Billy','Andrew','Wesley','Joe','Jill','Ana','Wendy','Eva']
name = []
for i in names:
if len(i) > 4 :
name.append(i)
print(name) #输出为 ['Billy', 'Andrew', 'Wesley', 'Wendy']
name = [i for i in names if len(i) > 4] #生成一个列表
print(name) #输出为 ['Billy', 'Andrew', 'Wesley', 'Wendy']
name = [i.upper() for i in names if len(i) < 5]
print(name) #输出为 ['TOM', 'JOE', 'JILL', 'ANA', 'EVA']
8、求M,N中矩阵对应元素的和
m = [[1,2,3],
[4,5,6],
[7,8,9]]
n = [[2,2,2],
[3,3,3],
[4,4,4]]
list01=[]
for i in range(3):
list02 = []
for j in range(3):
list02.append(m[i][j]+n[i][j])
list01.append(list02)
print(list01)
9、打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方
for i in range(100,1000):
x = i//100 #符号/表示的是除,返回的是商,符号//表示的是取整除,返回的是商的整数部分
y = i%100//10
z = i%100%10
if i == (x**3)+(y**3)+(z**3) :
print(i)
10、打印菱形
for i in range(1,8,2):
print(('*'*i).center(7))
if i == 7:
for i in range(5, 0, -2):
print(('*' * i).center(7))
i = '*'
n = int(input('n = '))#表示输出的行数
l = []
l.append(i)
for index in range(1,n):
print(i.center(n * 2 + 1))
i+= '**'
l.append(i)
for index in l[::-1]:
print(index.center(n * 2 + 1))
11、一个5位数,判断它是不是回文数,即12321是回文数
num = input('请输入一个数')if num == num[::-1]:
print('%s是一个回文数' % num)
else:
print('%s不是一个回文数' % num)
12、求一个3*3矩阵对角线元素之和 ,包括主对角线和副对角线
m = [[1,2,3],
[4,5,6],
[7,8,9]]
x = 0
y = 0
for i in range(3):
x+=m[i][i]
y+=m[i][2-i]
print(x) #输出为15,主对角线
print(y) #输出为15,副对角线
13、有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
for x in range(1,5):
for y in range(1,5):
for z in range(1,5):
if x != y and x != z and y != z:
print(x*100+y*10+z)
#列表推导式
num = [x*100+y*10+z for x in range(1,5) for y in range(1,5) for z in range(1,5) if x != y and x != z and y != z]
print(num)
14、将列表用for循环添加到另一个字典中
names = ['Tom','Billy','Andrew','Joe','Alice','Sherry','Eva']
print(list(enumerate(names)))
#enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,
# 同时列出数据和数据下标,一般用在 for 循环当中。
name = {k:v for k,v in enumerate(names)}
print(name)
'''
输出为
[(0, 'Tom'), (1, 'Billy'), (2, 'Andrew'), (3, 'Joe'), (4, 'Alice'), (5, 'Sherry'), (6, 'Eva')]
{0: 'Tom', 1: 'Billy', 2: 'Andrew', 3: 'Joe', 4: 'Alice', 5: 'Sherry', 6: 'Eva'}
'''
15、设一组账号和密码不少于两个,通过输入账号和密码,如果输入正确则显示登录成功,若账号或者密码错误则显示登录失败,最对可以输入三次
users ={'张三':'123456','李四':'654321'}
for i in range(3):
name = input('请输入账号:')
pwd = input('请输入密码:')
if name in users:
if pwd == users[name]:
print('登录成功')
break
else:
if i== 2:
print('您的账号已冻结!')
break
print('您的密码有误!')
else:
if i == 2:
print('您的账号已冻结!')
break
print('您的账号有误!')
16、求阶乘 用while 和for 分别实现
num = int(input('请输入一个数:'))
for
x = 1
for i in range(1,num+1):
x*=i
print(x)
#两种实现方式
x = 1
y = 1
while x <= num:
y*=x
x+=1
print(y)
17、冒泡排序 从小到大
list01 = [2,6,4,9,3,10]
for i in range(len(list01)): #要排几个 排序的次数
for j in range(1,len(list01)-i): #剩下的数开始排序
if list01[j] < list01[j-1]:
list01[j],list01[j-1] = list01[j-1],list01[j] #Python中的特殊用法
print(list01) #输出为[2, 3, 4, 6, 9, 10]
18、模块的引入
import random
i=1
while i<=5:
print(random.randint(1,10),end = ' ') #输出为 9 4 8 3 5
i+=1