Python-基础练习案例

75 阅读5分钟

复数类型

"""
将复数2.3×103-1.34×10-3j赋值给变量A,并分别提取A的实部和虚部。
"""
import math

A = complex(2.3e3, 1.34e-3)
print(f'实部 {A.real}')
print(f'虚部 {A.imag}')

计算下列表达式的值

"""
计算下列表达式的值: 在这里插入图片描述 程序:

z1 = 2sin85/1+e2
"""

z1 = (2 * (math.sin(math.pi * 85 / 180))) / (1 + math.e ** 2)
print(f'求值如下 {z1}')

建立一个包含10个字符的字符串A,然后对该字符串进行如下操作

"""
3、建立一个包含10个字符的字符串A,然后对该字符串进行如下操作:
(1)计算输出字符串的长度;
(2)从第1个字符开始,每间隔2个字符取1个字符,组成子字符串B;
(3)将字符串A倒过来重新排列产生新的字符串C;
(4)将字符串A的前4个字符与字符串C的后5个字符进行组合,产生字符串D。
"""
# 1234567890
A = input("请输入一个10位长的字符串:")
print(A)
print("A长度{0}".format(len(A)))
# 字符串截取 (开始,结束,步长)
B = A[::2]
print(B)
# 方法一 [::-1] 字符串翻转
# C = A[::-1]
# 方法二 ''.join(str)
C = ''.join(reversed(A))
print(str(C))
D = A[:4] + C[5:]
print(D)

字符串的翻转

"""
字符串的切片功能
"""

# 字符串的翻转1
from functools import reduce

a = '1234567'
# 获取前四个元素 步长为2
b = a[0:4:2]
# 元素倒排 步长为2
c = a[::-2]
print(b)
print(c)

# 字符串的翻转2
d = ''.join(reversed(a))
print(d)


# 字符串的翻转3
def loopStr(str):
    list = []
    index = len(str) - 1
    while index >= 0:
        list.append(str[index])
        index -= 1
    return ''.join(list)


print(loopStr(a))

# 字符串的翻转4
e = reduce(lambda x, y: y + x, a)
print(e)

字符串基础操作

A = 'Hello World! Error isMe isMe \n isMe'
print("split字符串分割,默认用空格分割 {0}".format(A.split()))
print("index索引,找出指定字符的索引位置 {0}".format(A.index('W', 1, 7)))
print("count统计指定字符的个数 {0}".format(A.count('l', 1, 7)))
print("casefold字符串转换为小写 {0}".format(A.casefold()))
print("find字符串查询索引位置 {0}".format(A.find('Error')))
print("lstrip截掉字符串左边的空格或指定字符。 {0}".format(A.lstrip('Hello')))
print("rsplit截掉字符串右边的空格或指定字符。 {0}".format(A.rsplit('isMe')))
print("strip用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。{0}".format(A.strip()))
print("replace字符串替换功能。 {0}".format(A.replace('isMe', 'isYou', 3)))
print("splitlines按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,"
      "不包含换行符,如果为 True,则保留换行符。 {0}".format(A.splitlines()))
print("capitalize字符串的首字母转换为大写,其余字母转换为小写 {0}".format(A.capitalize()))
print("partition如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,"
      "第二个为分隔符本身,第三个为分隔符右边的子串。 {0}".format(A.partition(' ')))
print("字符串转换为列表--使用列表推导式,将字符串的每个字符或子串作为列表元素 {0}".format([A[i] for i in range(len(A))]))
print("字符串转换为列表--map()函数可以将一个函数应用于一个可迭代对象的每个元素,并返回一个迭代器 {0}".format(list(map(lambda x: x, A))))

生成新的四位数

"""
编程程序,从键盘任意输入1个4位数,将该数字中的每位数与7相乘,然后取乘积结果的个位数对该数字进行替换,最后得到1个新的4位数。
"""
target_str = ''
num_list = list(('-'.join(str(4564))).split("-"))
for elem in num_list:
    target_str += str(int(elem) * 7 % 10)
print("新四位数: {0}".format(target_str))

浅深拷贝

"""
python深拷贝和浅拷贝?
注意引用和copy(),deepcopy()的区别

浅拷贝小结:
1)当浅复制的值是不可变对象(字符串、元组、数值类型)时和“赋值”的情况一样,对象的id值(id()函数用于获取对象的内存地址)与浅复制原来的值相同。
2)当浅复制的值是可变对象(列表、字典、集合)时会产生一个“不是那么独立的对象”存在。有两种情况:
第一种情况:复制的对象中无复杂子对象,原来值的改变并不会影响浅复制的值,同时浅复制的值改变也并不会影响原来的值。原来值的id值与浅复制原来的值不同。
第二种情况:复制的对象中有复杂子对象(例如列表中的一个子元素是一个列表),如果不改变其中复杂子对象,浅复制的值改变并不会影响原来的值。 但是改变原来的值中的复杂子对象的值会影响浅复制的值。


深拷贝
深拷贝:与浅拷贝对应,深拷贝拷贝了对象的所有元素,包括多层嵌套的元素。深拷贝拷贝出来的对象是一个全新的对象,不再与原来的对象有任何关系。
"""

import copy

a = [1, 2, 3, 4, ['a', 'b']]  # 原始对象

b = a  # 赋值,传对象的引用
c = copy.copy(a)  # 对象拷贝,浅拷贝
d = copy.deepcopy(a)  # 对象拷贝,深拷贝

a.append(5)  # 修改对象a
a[4].append('c')  # 修改对象a中的['a', 'b']数组对象

print('a = ', a)
print('b = ', b)
print('c = ', c)
print('d = ', d)

参考链接

Python基础 https://juejin.cn/post/6978409487472263175?searchId=202410011058345FF960A059A2F39307EE