Python基础
字符串操作
version = 'java version "1.8.0_331"'
获取java的版本 注意: 不要双引号。
version = 'java version "1.8.0_331"'
print(version[14:-1])
for循环
计算 1-100 之内的偶数之和。 也就是 2+4+6+8+10+….+100 ```python result = 0 for i in range(0,101,2): result = result + i
当for循环执行完成之后。 可以获取最终的结果
print(result)
3. 使用for 循环,打印一个 9层 金字塔。
![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 />打印的时候,从上往下
| 层数n | *号左边空格数(9-n) | *号的个数 (2n-1) |
| --- | --- | --- |
| 1 | 8 | 1 |
| 2 | 7 | 3 |
| 3 | 6 | 5 |
| 4 | 5 | 7 |
| 5 | 4 | 9 |
| 6 | 3 | 11 |
| 7 | 2 | 13 |
| 8 | 1 | 15 |
| 9 | 0 | 17 |
发现规律
- *号左边的空格 数 9-n
- * 号的格式是 2n-1
```python
for n in range(1,10):
# 左边的空格数
blank = (9-n) * " "
# *的个数
star = (2*n-1) * "*"
print(blank + star)
- 使用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)
- 使用嵌套循环,打印 九九乘法表。
```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
- 根据 用户注册接口 设计测试场景,生成对应的测试数据,放到文件。
根据整理的数据
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()
当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()
函数
生成一个随机的身份证号。
身份证号组成。
分析: 身份证号,需要三部分组成,这三部分可以定义三个函数。
前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}")
模块,包
- 将 生成随机手机号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()
- 读取 gb2312.csv 文件,随机选择一个地区码。
参考
csv文件处理🎈