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