Python基础

字符串操作

  1. version = 'java version "1.8.0_331"'
  1. 获取java的版本 注意: 不要双引号。

    1. version = 'java version "1.8.0_331"'
    2. print(version[14:-1])

    for循环

  2. 计算 1-100 之内的偶数之和。 也就是 2+4+6+8+10+….+100 ```python result = 0 for i in range(0,101,2): result = result + i

当for循环执行完成之后。 可以获取最终的结果

print(result)

  1. 3. 使用for 循环,打印一个 9 金字塔。
  2. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/87080/1652695271291-d29d8f0f-e5cf-421e-94c2-02d5920613bf.png#clientId=ue230e517-4ddf-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=393&id=u32d2e986&margin=%5Bobject%20Object%5D&name=image.png&originHeight=491&originWidth=448&originalType=binary&ratio=1&rotation=0&showTitle=false&size=67384&status=done&style=none&taskId=u72c5e407-f5b5-4c31-bb8f-645952e1ec1&title=&width=358.4)<br />分析:<br />打印的时候,从上往下
  3. | 层数n | *号左边空格数(9-n | *号的个数 2n-1 |
  4. | --- | --- | --- |
  5. | 1 | 8 | 1 |
  6. | 2 | 7 | 3 |
  7. | 3 | 6 | 5 |
  8. | 4 | 5 | 7 |
  9. | 5 | 4 | 9 |
  10. | 6 | 3 | 11 |
  11. | 7 | 2 | 13 |
  12. | 8 | 1 | 15 |
  13. | 9 | 0 | 17 |
  14. 发现规律
  15. - *号左边的空格 9-n
  16. - * 号的格式是 2n-1
  17. ```python
  18. for n in range(1,10):
  19. # 左边的空格数
  20. blank = (9-n) * " "
  21. # *的个数
  22. star = (2*n-1) * "*"
  23. print(blank + star)

image.png


  1. 使用for循环打印金子塔,将上面的 * 号换成具体的数字打印出来。比如第一层 打印出1,第二层打印出2. 依次类推,第9层打印出9.

分析:

层数n *号左边空格数(9-n) 对应数字的个数 (2n-1)
1 8 1 1
2 7 2 3
3 6 3 5
4 5 4 7
5 4 5 9
6 3 6 11
7 2 7 13
8 1 8 15
9 0 9 17
for n in range(1,10):
    # 左边的空格数
    blank = (9-n) * " "
    # 数字的个数
    star = (2*n-1) * str(n)
    print(blank + star)

image.png

  1. 使用嵌套循环,打印 九九乘法表。 ```python for i in range(1,10): for j in range(1,i+1):
     print(f'{j} * {i} = {j*i}',end="\t")
    

    换行

    print()
![image.png](https://cdn.nlark.com/yuque/0/2022/png/87080/1652839970143-60ccae9e-2dd6-4b98-aa23-3d19dccb993f.png#clientId=u9950d582-5989-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=260&id=u802475b8&margin=%5Bobject%20Object%5D&name=image.png&originHeight=325&originWidth=1357&originalType=binary&ratio=1&rotation=0&showTitle=false&size=30644&status=done&style=none&taskId=u491d2062-ff1a-40af-affc-1d0fa0dfbbd&title=&width=1085.6)

3. 使用 while 循环 打印 9层金子塔。
```python
n = 1
while n<=9:
    blank = (9-n) * " "
    star =(2*n-1) * "*"
    print(blank+star)
    n = n+1

image.png

  1. 根据 用户注册接口 设计测试场景,生成对应的测试数据,放到文件。

image.png
作业 - 图5
根据整理的数据

usernames = ["13212341234","13212341236","12341234123","134000011112","1340000111",""]
passwords = ["123456","12345","","123456789012345678","1234567890123456789"]

还是使用循环的方式进行排列组合。

usernames = ["13212341234","13212341236","12341234123","134000011112","1340000111",""]
passwords = ["123456","12345","","123456789012345678","1234567890123456789"]

with open(file='testdata.txt',mode='w',encoding='utf8') as f:
    for name in usernames:
        for passwd in passwords:
            f.write(f"{name},{passwd}\n")

乘法表 详解

for i in range(1,10):
    for j in range(1,10):
        # 计算结果
        s = i*j
        # print(i,"*", j,"=",s)
        print(f"{i}*{j}={s}",end="\t")
    print()

image.png
image.png
当i = 1 的时候 j 的值 1
i=2 j = 1,2
i=3 j = 1,2,3
i=4 j =1,2,3,4



for i in range(1,10):
    for j in range(1,i+1):
        # 计算结果
        s = i*j
        # print(i,"*", j,"=",s)
        print(f"{i}*{j}={s}",end="\t")
    print()

image.png

函数

生成一个随机的身份证号。

身份证号组成。
作业 - 图9
分析: 身份证号,需要三部分组成,这三部分可以定义三个函数。

前6位

使用随机的方式生成6位数字。将生成的数字 return 返回

def pre_6():
    pass

中间8位

使用随机的方式 做生成8位 数字, 现在一般情况,人的寿命假设最大100岁。生成的身份证号 年 从1922-2021,给函数添加 默认值。默认生成 1922-2021 年之间的身份证号。当然也在调用函数的时候指定生成

def ymd_8(startyear=1922,endyear=2021):
    pass
# year % 4 == 0 4的倍数
# year% 100 !=0 非100的倍数
# year % 400 == 0 400的倍数

def is_year(year):
    if (year % 4 == 0 and year% 100 !=0 ) or year % 400 == 0:
        print(f"{year} 是闰年")
    else:
        print(f'{year} 是平年')
# 查看 从1800 - 2200 年分
for i in range(1800,2201):
    is_year(i)

后4位

生成最后4位。

def last_4():
    pass

def pre_6():
    pass

def ymd_8(startyear=1922,endyear=2021):
    pass

def last_4():
    pass


import random
def pre_6():
    n = ""
    for i in range(6):
        # 循环6次 每次生成1个随机数字,转换位字符串进行拼接
        n = n + str(random.randint(0,9))
    # 循环执行完成
    return n

def ymd_8(startyear=1922,endyear=2021):
    # TODO 一系列操作之后 生成一个随机的年月日
    ydm = "20010101"
    return ydm

def last_4():
    nums=['0','1','2','3','4','5','6','7','8','9','X']
    # 前三位 数字
    n3 =""
    for i in range(3):
        n3= n3+str(random.randint(0,9))
    # 第四位 随机从 nums 选择一个
    n4 = random.choice(nums)
    # 将n3 和 n4 拼接之后返回
    return n3+n4


# 生成身份证id
id = pre_6() + ymd_8() + last_4()
print(f"生成一个 {id}")

参考答案


import random
def pre_6():
    n = ""
    for i in range(6):
        # 循环6次 每次生成1个随机数字,转换位字符串进行拼接
        n = n + str(random.randint(0,9))
    # 循环执行完成
    return n

def ymd_8(startyear=1922,endyear=2021):
    # TODO 一系列操作之后 生成一个随机的年月日
    # 生成出生的年  随机生成
    year = random.randint(startyear,endyear)
    print(f"生成年份 {year}")
    # 生成月份  1-12
    month = random.randint(1,12)

    # 如果月份在1-9 之间,前面需要补0
    if month < 10:
        month = "0"+str(month)  # 转换位字符串之后前面 补0
    print(f"生成的月份 {month}")
    # 1,3,5,7,8,10,12 天数 31天
    if int(month) in [1,3,5,7,8,10,12]:
        day = random.randint(1,31) #
    # 4,6,9,11 月 30天
    elif int(month) in [4,6,9,11]:
        day = random.randint(1,30)
    # 闰年 2月份 29天
    elif (year%4 == 0 and year%100!=0) or year%400==0:
        day = random.randint(1,29)
    # 以上都不符合,那就是平年
    else:
        day = random.randint(1,28)

    # 如果day 在1-9 之间 前面补0
    if day < 10:
        day = "0"+str(day)
    print(f"生成的日期 {day}")
    # 转换为字符串 进行拼接
    ydm = str(year)+str(month)+str(day) #等价于 f"{year}{month}{day}"
    return ydm

def last_4():
    nums=['0','1','2','3','4','5','6','7','8','9','X']
    # 前三位 数字
    n3 =""
    for i in range(3):
        n3= n3+str(random.randint(0,9))
    # 第四位 随机从 nums 选择一个
    n4 = random.choice(nums)
    # 将n3 和 n4 拼接之后返回
    return n3+n4


# 生成身份证id
id = pre_6() + ymd_8() + last_4()
print(f"生成一个 {id}")

模块,包

  1. 将 生成随机手机号get_phone 函数 , 生成身份证 get_id 函数 放在 项目的根目录下 utils.py 文件中。 新建一个py文件 mydemo.py 调用 get_phone(), get_id() ```python def get_phone(): pass

def get_id(): pass


2. 随机生成 100个手机号,100个身份证id 保存到 testuser.csv 文件中。

参考代码
```python
import csv

def write_csv():
    with open('data.csv',encoding='utf8',mode='w',newline="") as f:
        # 使用 csv的方式来写入, 固定用法
        wr =  csv.writer(f)
        # 开始写入数据 往文件中写入数据, 数据必须是 列表格式。写入一行
        wr.writerow(["手机号","身份证id"])
        for i in range(10):
            wr.writerow(["13212231122","111122222334455555"])

if __name__ == '__main__':
    write_csv()
  1. 读取 gb2312.csv 文件,随机选择一个地区码。

image.png
参考
csv文件处理🎈