列表基础
1.已知一个列表,求列表中心元素。
list1 = ['a','b','c','d','e','f']
if len(list1) % 2: # 判断列表长度是否为奇数,为奇数则执行下列功能
print(list1[int(len(list1) / 2)])
else: # 当列表长度为偶数时,执行下列功能
print(list1[int(len(list1) / 2)], list1[int(len(list1) / 2 - 1)])
print(list1[int(len(list1) / 2)])
print(list1[int(len(list1) / 2 - 1)])
print('===================================')
2.已知一个列表,求出所有元素和。
list2 = [True,False]
# print(sum(list2)) # sum 只能对元素全是数字的列表进行求和,因为 sum函数 sum初值为0
# 如果列表元素不是数字,求和就要用for 遍历
sum2 = False # 根据列表中元素数据类型的不同,要赋予不同的 sum2值 ,且求和时,True和False一般作为1和0进行运算
for item in list2:
sum2 += item
print(sum2,type(sum2))
a = 'a'
b = 'b'
b += a
print(b)
3.已知一个列表,输出所有奇数下标元素。
list3 = [1,2,3,4,5,6,7,8,9]
for index in range(len(list3)):
if index % 2:
print(list3[index])
4.已知一个列表,输出所有元素中,值为奇数的。
list4 = [112,111,97,88,33]
for num in list4:
if num % 2:
print(num)
5.已知一个列表,将所有元素乘二。
list5 = [1,2,3,'a','b','c']
# list5_new = []
# for item in list5:
# list5_new.append(item * 2)
# print(list5,list5_new)
for index in range(len(list5)):
list5[index] *= 2
print(list5)
6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的。
例如:names = ['张三', '李四', '大黄', '张三'] -> names = ['张三', '李四', '大黄']
list6 = ['a','b','a','a','b','c','c']
要删除重复的元素,首先要确定重复的元素是哪些。
list6_new = []
for item in list6:
if item not in list6_new:
list6_new.append(item)
print(list6_new)
# 推测:一般要对列表中的元素进行删除操作时,尤其是删除重复元素时,是无法对原列表进行操作的,需要声明一个新列表。
# 判断元素是否重复要用in 和 not in
list6_new = list(set(list6))
print(list6_new) # 内置函数set 处理后是生成的列表是无序的。
7.已知一个数字列表(数字大小在0-6535之间),将列表转换成数字对应的字符。
# print(chr(6535))
list7 = [97,98,6534,6535]
for num in list7:
print(chr(num))
8.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)
list8 = [9,8,6,9,7,5]
list8.sort()
del list8[0];del list8[len(list8)-1]
print(list8)
print(sum(list8))
print(sum(list8) / len(list8)) # sort() 函数对列表进行处理后,原列表发生变化,包括长度
# print(sum(list8) / len(list8)-3)
# print(sum(list8) / (len(list8)-3))
9.有两个列表A 和列表B,使用列表C来获取两个列表中公共的元素。
例如:A = [1,'a',4,90] B = ['a',8,'j',1] ---> C = [1,'a']
list9_1 = [1,'a',4,90]
list9_2 = ['a',8,'j',1]
list9_3 = []
for item in list9_1:
if item in list9_2:
list9_3.append(item)
print(list9_3)
周末
1.控制台输入年龄,根据年龄输出不同的提示(例如:老年人,青壮年,成年人,未成年,儿童)
age = int(input('请输入年龄:'))
if age < 12:
print('儿童')
elif age < 18:
print('未成年')
elif age < 30:
print('成年人')
elif age < 60:
print('青壮年')
else:
print('老年人')
2.计算5 的阶乘5! 的结果 还可以用循环和 num *= x x -= 1 求值
# num = int(input('请输入数字:'))
# list2 = list(range(num))
# list2.sort(reverse=True)
# del list2[len(list2)-1]
# print(list2)
# for x in list2:
# num *= x
# print(num)
3.求 1! + 2! + 3! +···+20! 的和
num = 20
sum = 0
list3 = list(range(num))
print(list3)
for index in range(len(list3)):
list3[index] += 1
print(list3)
print('====================================')
for x in list3:
if x > 0:
list3_1 = list(range(x))
list3_1.sort(reverse=True)
del list3_1[len(list3_1)-1]
for y in list3_1:
x *= y
sum += x
print(sum)
print('===========================================')
4.计算1 + 1/2! + 1/3! + 1/4!+···+1/20! 的结果
num = 20
sum = 0
list4 = list(range(num))
for index in range(len(list4)):
list4[index] += 1
for x in list4:
if x > 0:
list4_1 = list(range(x))
list4_1.sort(reverse=True)
del list4_1[len(list4_1)-1]
for y in list4_1:
x *= y
sum += 1 / x
print(sum)
print('=========================')
5.循环输入大于0 的数字进行累加,直到输入的数字为0,就结束循环,并最后输出累加的结果。
# num = int(input('请输入数字:'))
# sum = 0
# while num != 0:
# sum += num
# num = int(input('请输入数字:'))
# print(sum)
6.求s = a + aa + aaa + aaaa + aaaa + aa···a 的值,其中a 是一个数字。
# 例如 2 + 22 + 222 + 2222 + 22222(此时共有5个数相加),几个数相加有键盘控制。
# 程序分析:关键是计算出每一项的值。
# times = int(input('请输入次数:'))
# x = 1
# num = 2
# sum = 0
# while x <= times:
# intstr_num = int(str(num) * x)
# x += 1
# print(intstr_num,type(intstr_num))
# sum += intstr_num
# print(sum)
# str1 = '1'
# print(str1*2,type(str1*2))
# print(int(str1*2),type(int(str1*2)))
7.输入三个整数x,y,z,请把这三个数由小到大输出
# x = 0
# numbers = []
# while x < 3:
# num = int(input('请输入整数:'))
# x += 1
# numbers.append(x)
# numbers.sort()
# print(numbers)
8.控制台输出三角形
# a.
# times = int(input('请输入次数:'))
# list8 = list(range(times))
# for index in range(len(list8)):
# list8[index] += 1
# list8.sort(reverse=True)
# for num in list8:
# print('*'*num)
# b.
print('==========================')
times = 9
blanks = []
numbers = []
for blank in range(times // 2 + 1):
blanks.append(blank)
blanks.sort(reverse=True) # blanks = [[3, 2, 1, 0]]
for number in range(times + 1):
if number % 2:
numbers.append(number) # numbers = [[1, 3, 5, 7]]
for x in range(times // 2 + 1):
print(' ' * blanks[x] + '*' * numbers[x])
9.输出9*9口诀。 1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
n = 9
numbers = []
for num in range(n):
numbers.append(num+1)
for number in numbers:
m = 1
while number >= m:
print(str(number)+'*'+str(m)+'='+str(number*m),end = ' ')
m += 1
print('')
10. 这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?
for x in range(1,100):
for y in range(1,100):
for z in range(1,100):
if x + y + z == 100 and 6*x + 4*y + z == 200:
print(x,y,z)