python练习

1、 第2题:如何使用Python输出一个[斐波那契数列]Fibonacci
100以内的斐波那契数列

# encoding:utf-8

a = [1, ] # 第一个x
x = 1
y = 1
i = 1
# x, y 依次向后移动
while y <= 100:
    i += 1
    z = x + y
    x = y
    y = z
    a.append(x)
print(a)

2、python实现列表去重的方法?
简单直接的办法,集合里面的元素不可以重复

# encoding:utf-8


my_list = [1, 1, 2, 2, 3, 3, 5, 6, 7, 88]
my_new = []
my_list = set(my_list)
for i in my_list:
    my_new.append(i)
print (my_new)

查看是否在my_end里,如果不在就添加,在的话跳过

#encoding:utf-8
my_list = [1, 1, 2, 2, 3, 3, 5, 6, 7, 88]
my_end = []
for i in my_list:
    if i in my_end:
        pass
    else:
        my_end.append(i)
print my_end

3、断言判断

# encoding:utf-8
import os
import unittest

#  assert方法判断
assert 1 == 1
assert 2 + 2 == 2 * 2
assert len(['my boy', 12]) < 10


# assertEqual方法判断
class Test(unittest.TestCase):
    def test04(self):
        """失败案例"""
        a = "上海-悠悠"
        b = "yoyo"
        self.assertEqual(a, b)

    def test01(self):
        """判断 a == b """
        a = 1
        b = 1
        self.assertEqual(a, b)


if __name__ == "__main__":
    unittest.main()

4、写一个函数, 输入一个字符串, 返回倒序排列的结果?

  1. 把字符串变为列表,用列表的reverse函数
def reverse2(text='abcdef'):
    new_text=list(text)
    new_text.reverse()
    return ''.join(new_text)

reverse2('abcdef')
  1. print(a[:-1]) ### 除了最后一个取全部
    [ 0.64061262 0.8451399 0.965673 0.89256687]
def reverse3(text='abcdef'):
    new_text=[]
    for i in range(1,len(text)+1):
        new_text.append(text[-i])
    return ''.join(new_text)

reverse3('abcdef')
  1. print(a[::-1]) ### 取从后向前(相反)的元素
    [ 0.48518743 0.89256687 0.965673 0.8451399 0.64061262]
    使用字符串本身的翻转
def order_by(str):
    return str[::-1]
 
print(order_by('123456'))
 
输出:654321

5、a=1, b=2, 不用中间变量交换a和b的值?

# encoding:utf-8
a = 1
b = 2
a = a + b  # 此时的a是总和
b = a - b  # 综合 -b,得到a的值 赋给 b
a = a - b  # 总和 减去现在b的值,得到a
print(a, b)
a, b = b, a

6、zip用法

实例
以下实例展示了 zip 的使用方法:

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]

7、请尽可能列举python列表的成员方法,并给出以下列表操作的答案
1) a=[1, 2, 3, 4, 5], a[::2]=?, a[-2:] = ?

a[::2] = [1, 3, 5], a[-2:] = [4, 5]

2) 一行代码实现对列表a中的偶数位置的元素进行加3后求和?

a = [1, 2, 3, 4, 5]
print(sum([i + 3 for i in a if i % 2 == 0]))

8、设计一个函数返回给定文件名的后缀?

# encoding:utf-8
filename = "xudasoa.txt"
f = filename.rsplit('.', 1)[1]
print(f)

结果是:
['xudasoa', 'txt']
txt

9、求出0n的所有正整数中数字k(09)出现的次数。编程语言不限,Python优先。

例如:k=1,n=12,那么 1 在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]一共出现5次[1,10,11,12]
输入:k=1,n=12
输出:5


统计数字 1 在 [1,10,11,12]出现的次数这非常像Python中统计字符串a在字符串b中出现的次数:
b.count(a)
所以我们将把数字转为字符串来做统计。

# encoding:utf-8
import re

list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
count = 0
s_list = str(list)

for i in s_list:
    # print(i)
    if i == "1":
        count += 1
print(count)
print(re.findall('1\d*',s_list))
print(type(s_list))

______________________________________________
结果是:
5
['1', '10', '11', '12']
<class 'str'>

10、在except中return后还会不会执行finally中的代码?怎么抛出自定义异常?介绍一下 except 的作用和用法?
会继续处理 finally 中的代码;用 raise 方法可以抛出自定义异常

except: #捕获所有异常
except: <异常名>: #捕获指定异常
except:<异常名 1, 异常名 2> : 捕获异常 1 或者异常 2
except:<异常名>,<数据>:捕获指定异常及其附加的数据
except:<异常名 1,异常名 2>:<数据>:捕获异常名 1 或者异常名 2,及附加的数据

https://www.runoob.com/python/python-exceptions.html.
11、在Python中输入某年某月某日,判断这一天是这一年的第几天?(可以用 Python 标准库)

# encoding:utf-8
# 在Python中输入某年某月某日,判断这一天是这一年的第几天?(可以用 Python 标准库)
import datetime

y = int(input('请输入4位数字的年份:'))  # 获取年份
m = int(input('请输入月份:'))  # 获取月份
d = int(input('请输入是哪一天:'))  # 获取“日”

targetDay = datetime.date(y, m, d)  # 将输入的日期格式化成标准的日期,2020-03-18
print("", 2020 - 1, 12, 31)

print("得到上一年的最后一天时间", targetDay.year - 1, 12, 31)  # 如,(2020-1 12 31)
print("时间格式化之后为:", datetime.date(targetDay.year - 1, 12, 31))  # 时间格式化之后为2019-12-31

dayCount = targetDay - datetime.date(targetDay.year - 1, 12, 31)  # 减去上一年最后一天,datetime.date(year, month, day)
print('%s是%s年的第%s天。' % (targetDay, y, dayCount.days))

结果是:
请输入4位数字的年份:2020
请输入月份:3
请输入是哪一天:3
 2019 12 31
得到上一年的最后一天时间 2019 12 31
时间格式化之后为: 2019-12-31
2020-03-032020年的第63天。

12、将下面的Python代码简化?

my_list = []
for i in range(10):
    my_list.append(i**2)
    print(my_list)

简化后的代码

print([x**2 for x in range(10)])

参考博客:https://me.csdn.net/hihell

你可能感兴趣的:(python学习)