基础测试题(字符串、列表、元组、字典)
1、元素分类
有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个 key 中,将小于 66 的值保存至第二个 key 的值中。
即: {'k1': 大于 66 的所有值, 'k2': 小于 66 的所有值}
代码1:
a = [11,22,33,44,55,66,77,88,99] b = [] c = [] for i in a: if i >66: b.append(i) else: c.append(i) x = {"k1":c,"k2":b} print(x)
代码2:
l = [11,22,33,44,55,66,77,88,99,90] result = {} for item in l: if item < 66: if "k1" not in result: result['k1'] = [item,] # {'k1': [11,]} else: result['k1'].append(item) elif item > 66: if "k2" not in result: result['k2'] = [item, ] # {'k1': [11,]} else: result['k2'].append(item) print(result)
代码3:
values = [11,22,33,44,55,66,77,88,99,90] value_dict = {'k1':[],'k2':[]} for i in values: if i > 66: value_dict['k1'].append(i) elif i < 66: value_dict['k2'].append(i) print(value_dict)
2、1 2 3 4 5 6 7 8能组成多少个不同的两位数?
代码:
count = 0 for i in range(1,9): for V in range(1,9): if i != V: print(i,V) count += 1 print(count)
#如果数据是列表[1,3,5,9]的形式,那么如下
ls = [1,3,5,9]
count = 0
for i in range(0,len(ls)):
for V in range(0,len(ls)):
if i != V:
count+=1
print(count)
3、有两个列表
l1 = [11,22,33]
l2 = [22,33,44]
a. 获取内容相同的元素列表
b. 获取 l1 中有, l2 中没有的元素列表
c. 获取 l2 中有, l1 中没有的元素列表
d. 获取 l1 和 l2 中内容都不同的元素
代码:
for i in l2: if i not in l1: print(i) for i in l1: if i not in l2: print(i)
4、99乘法表
代码1:
for i in range(1,10): string = "" for j in range(1,i+1): string +=str(j) + " * "+str(i) + " = " +str(i*j)+"\t" #\t为横向制表符(相当于4个空格) print(string)
代码2:
for i in range(1,10): for j in range(1,i+1): print(str(j) + " * "+str(i) + " = " +str(i*j)+"\t",end="") ##end表示不换行,如果去掉这个end将会所有的输出分别占一行 print("\n",end="") ##此处也可以用print()替换,因为print自带一个换行。换行+不换行=什么都不输出+自动换行
输出:
5、输出两个不同数字的组合,且数字不能重复
li = [1,2,3,4] l = len(li) for i in range(0,l-1): for v in range(i+1,l): print(li[i],li[v])
输出:
6、请用代码实现列表li=['alex','eric',123]元素之间用下划线连接起来
如果列表有多个元素不是字符串,用for循环将其修改
代码1:
li=['alex','eric',123] li[2] = str(li[2]) v = "_".join(li) print(v)
代码2:
li=['alex','eric',123] l = [] for i in li: i = str(i) l.append(i) v = "_".join(l) print(v)
输出:
7、公鸡5文钱一只,母鸡3文钱一只,三只小鸡一文钱,总共要买一百只鸡,其中公鸡母鸡小鸡都要有,请问各买多少只才能凑足100文钱?
for x in range(1,100//5): for y in range(1,100//3): for z in range(1,100): if x + y + z == 100 and 5*x + 3*y + z/3 == 100: print(x,y,z)
输出:
8、使用for,len,range输出元组的索引,使用enumerate输出元组和序号(序号从10开始),第一个参数为可迭代对象,第二个参数为索引的起始位置
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
tu = ('alex','eric','rain') for i in range(len(tu)): print(i) for i,l in enumerate(tu,10): print(i,l)
a = list(enumerate(tu)) b = list(enumerate(tu,10)) print(a) print(b)
输出:
9、有如列表num=[2,7,11,15,8,7],请找任意两个元素相加能够等于9的元素集合,索引
代码1:输出元素
num=[2,7,11,15,8,7] for i in num: for j in num: if i + j == 9: print(i,j) 输出: 2 7 2 7 7 2 7 2
代码2:输出元素
num=[2,7,11,15,8,7] a = [] for i in num: for j in num: if i + j == 9: a.append((i,j)) print(a) 输出: [(2, 7), (2, 7), (7, 2), (7, 2)]
代码3:输出索引
num=[2,7,11,15,8,7] a = [] for i in range(len(num)): for j in range(len(num)): if num[i] + num[j] == 9: a.append((i,j)) print(a)
输出:
10、分页显示内容,每页显示10条数据,提示用户需要查看的页码:当输入指定的页码则显示指定数据。
user_list = [] for i in range(1,302): temp = {'name':'alex' + str(i),'email':'alex@live.com' + str(i),'password':'pwd' + str(i)} user_list.append(temp) while True: s = input("请输入页数:") s = int(s) start = (s-1)*10 end = s*10 result = user_list[start:end] for item in result: print(item,type(item))
输出: