Day6-Python-作业-2018/12/29

列表基础

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)

你可能感兴趣的:(Day6-Python-作业-2018/12/29)