python第二周day5(9.27)

1、day9字符串作业更改版

# *1.1输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7…位上的字符)
# 例如: 输入**'abcd1234 ' **  输出**'bd24'**
# 切片
str1 = 'abcd1234'
print(str1[1::2])  # bd24
# 2.1输入用户名,判断用户名是否合法(用户名长度6~10位)
# str2 = input('请输入一个用户名:')
# if 6 <= len(str2) <= 10:
#     print('用户名合法')
# else:
#     print('用户名不合法')  #    请输入一个用户名:陈来
# 3.1 **输入用户名,判断用户名是否合法(用户名中只能由数字和字母组成)(经常遇到)
# user_name = input('请输入一个用户名:')
# for x in user_name:
#     if not ('0' <= x <= '9' or 'a' <= x <= 'z' or 'A' <= x <= 'Z'):
#         print('用户名不合法')
#         break
# else:
#     print('用户名合法')
# 4.1 ***输入用户名,判断用户名是否合法(用户名必须包含且只能包含数字和字母,并且第一个字符必须是大写字母)
user_name = input('请输入一个用户名:')
if 'A' <= user_name[0] <= 'Z':# 保存数字字符的个数count = 0for x in user_name[1:]:if not ('0' <= x <= '9' or 'a' <= x <= 'z' or 'A' <= x <= 'Z'):print('用户名不合法')breakelse:if '0' <= x <= '9':count += 1else:if count:   # count !=0 一样print('用户名合法')else:print('用户名不合法')
else:print('用户名不合法')
# 练习5:输入一个字符串,将字符串中所有的数字字符取出来产生一个新的字符串
str3 = 'abc1shj23kls99+2kkk'
new_str3 = ''
for x in str3:if '0' <= x <= '9':new_str3 += x
print(new_str3)  #123992
# 练习6:输入一个字符串,将字符串中所有的小写字母变成对应的大写字母输出  (用upper方法和自己写算法两种方式实现)
str1 = 'a2h2klm12+'
# 方法一
# 规律:小写字母转大写字母:小写字母的编码值 - 32 --> 转换成字符
new_str1 = ''
for x in str1:if 'a' <= x <= 'z':new_str1 += chr(ord(x)-32) # ord(字符) ,chr(编码值)else:new_str1 += x
print(new_str1)  # A2H2KLM12+
# a:97 A:65  b:98 B:66
# 方法二
# 字符串.upper() -   将字符串中所有的小写字母转换成对应的大写字母,产生一个新的字符串
# lower 大写转小写
new_str1 = str1.upper()
print(new_str1)  # A2H2KLM12+
# **练习7:输入一个小于1000的数字,产生对应的学号(简单做法,运用+,*)
# 输入 ** '23' **,输出 ** 'py1901023' ** 输入 ** '9' **, 输出 ** 'py1901009' ** 输入 ** '123' **,输出 ** 'py1901123' **
# 23 -> 023   9 -> 009  123 -> 123
num = '23'
study_id = 'py1901' + (3-len(num))*'0'+num
print(study_id) # 'py1901
# 练习8.1 输入一个字符串,统计字符串中非数字字母的字符的个数
# str1 = input('请输入一个字符串:')
str1 = 'anc2+93-sj胡说'
count = 0
for x in str1:if not ('0' <= x <= '9' or 'a' <= x <= 'z' or 'A' <= x <= 'Z'):count += 1
print(count)    # 4
# 练习9:输入字符串,将字符串的开头和结尾变成'+',产生一个新的字符串
# 例如: 输入字符串**'abc123'**,  输出**'+bc12+
str1 = input('请输入一个字符串:')
new_str1 = '+'+str1[1:-1]+'+'
print(new_str1) # +bc12+
# 练习10.1. ***输入字符串,获取字符串的中间字符
#   例如: 输入**'abc1234'**  输出:**'1'**     输入**'abc123'**  输出**'c1'**
str1 = 'abc1234c'
count = len(str1)
if count % 2:print(str1[count//2])
else:print(str1[count//2 - 1:count // 2 +1])  # 12
# **练习11:11. **写程序实现字符串函数find/index的功能(获取字符串1中字符串2第一次出现的位置)
# 例如: 字符串1为:**how are you? Im fine, Thank you!**  , 字符串2为:**you**,  打印**8**
str1 = 'how are you? Im fine, Thank you!'
str2 = 'you'
len1 = len(str1)
len2 = len(str2)
for index in range(len1-len2 + 1): # *8取到最后三位if str1[index: index + len2] == str2: # **切片每次获得三个元素print(index)break
else:print('找不到')
# 12.获取两个字符串中公共的字符
#   例如: 字符串1为:**abc123**, 字符串2为: **huak3** , 打印:**公共字符有:a3**
str1 = 'abc123'
str2 = 'huak3'
result = set(str1) & set(str2)  # 使用集合的交集 &
print(''.join(result))  # 使用join方法直接转
new_str1 = ''
for x in result:new_str1 += x
print(new_str1)

2、r语法

1.r语法(阻止转义)

在字符串的最前面加r或者R,可以让字符串中所有的转义字符的功能消失(每个符号都会变成普通字符)

str1 = r'C:\users\name\test\demo.py'
str1 = R'C:\users\name\test\demo.py'
str2 = 'C:\\users\\name\\test\demo.py'
print(str1)

3、字符串格式化

# name = input('请输入姓名:')
# age = int(input('请输入年龄:'))
# message = 'xxx今年xx岁'
name = '小新'
age = 17
# 方法一:字符串拼接
message = name +'今年'+str(age)+'岁'
print(message) # chenlai今年12岁# 方法二:格式字符串
message = '%s今年%d岁' % (name, age)
print(message)# 方法三:f-string
message = f'{name}今年{age}岁!'
print(message)

1.格式字符串
“”"
语法:包含格式占位符的字符串 % (数据1,数据2,…)
%s->字符串 %d->整数
格式占位符:
%s - 字符串占位符(任何类型占位,不确定时可以使用)
%d - 整数占位符
%f - 浮点数占位符(保存6位小数)
%.Nf - 浮点数保留N位小数

1)%s可以给任何类型的数据占位(如果只有一个数据可以省略括号)

str1 = '%sxxx' % ('陈来')
str1 = '%sxxx' % '陈来'
str2= '%sxxx' % (123)
str2= '%sxxx' % ([12, 11])
print(str1, str2)

2)%d 可以给任何能转换成数字数据占位

str1 = '%d-xxx' % 12
str1 = '%d-xxx' % 12.5
print(str1)

3)%f 可以给任何能转换成数字数据占位

str2 = '%f-xxx' % 4.34
print(str2)  #4.340000-xxx
str1  = '余额:%.2f' % 78.9908099
print(str1)  # 余额:78.99str1 = '%s今年%d岁,月薪:%.2f元' % (name, age, 10000+2300)  # 只要不是赋值语句就可以
print(str1) # 小新今年17岁,月薪:12300.00元
str2 = '%s嘉年是%d年,总收入额达到%3.f' % ('某某公司',12,123.89)
print(str2)

2.f-string
“”"
1)基本用法
语法:f’{任何有结果的表达式}’ - 用表达式的结果来填充{}所在的位置

2)加参数
语法:f’{任何有结果的表达式:参数}’
参数:
.Nf — 控制小数位数
, — 逗号分隔银行金额的格式,数字三位之间用逗号隔开(金额)
.N% — 将数转换成百分比,比值保留N位小数
X>N — 将数据转换成长度为N的字符串,不够在前面用X对应的字符来填充
X<N — 将数据转换成长度为N的字符串,不够在后面用X对应的字符来填充
解释:

,< - 决定填充的时候填在前面还是后面
X - 填充字符
N - 目标长度
“”"

1)基本用法

str1 = f'收到你请讲'
str1 = f'{name}收到你请讲'
str1 = '{name}收到你请讲'
str1 = f'{name}-{age}-{age*10}-{name[-1]}' # 小新-17-170-新。f'{里面是有结果的表达式}'
print(str1)
str1 = f'{age- 10}是多少岁呢,{name}'
print(str1)

2)参数

a…Nf

money = 2305
str1 = f'金额:{money:.2f}'
print(str1)  # 金额:2305.00

b. ,

money = 2345000
str1 = f'余额:{money:,}'
print(str1)  # 2,345,000.三位之间用逗号隔开

c. .N%

rate = 0.5
str1 = f'市场占有率:{rate:.2%}'
print(str1)

d.X>N X<N 放前面,添几位,不够的加什么x :

,< - 决定填充的时候填在前面还是后面
X - 填充字符
N - 目标长度

num = 23
str1 = f'Python2106{num:0>3}'
print(str1)   # Python2106023str1 = f'Python2106{num:好<3}'
print(str1)    #  Python2106023

4、字符串相关方法

所有的关于字符串的相关方法看一下
菜鸟教程 - python字符串(网址) https://www.runoob.com/python3/python3-string.html
1、center,rjust,ljust,zfill
“”"
字符串.center(长度,填充字符),例如:‘abc’.center(7,‘x’)->‘xxabcxx’
字符串.rjust(长度,填充字符),例如:‘abc’.rjust(7,‘x’)->‘xxxxabc’
字符串.ljust(长度,填充字符),例如:‘abc’.ljust(7,‘x’)->‘abcxxxx’
字符串.zfill(长度)==字符串.rjust(长度,‘0’),例如:‘abc’.zfill(7)->‘0000abc’

“”"

print('abc'.center(7,'x'))  # xxabcxx
print('abc'.zfill(7)) # 0000abc

2.count

“”"
字符串1.count(字符串2) - 统计字符串1中字符串2出现的次数
字符串1.count(字符串2,开始下标,结束下标) - 在开始下标到结束下标(取不到)对应的范围内容统计字符串2出现的次数
“”"

str1 = 'how are you? i am fine, thank you. and you?'
print(str1.count('a'))  # 4
print(str1.count('you')) # 3
print(str1.count('a', 0, 12)) # 1
print(str1.count('u', 0, 10)) # 0

3.find,index
“”"
字符串1.find(字符串2) - 获取字符串1中字符串2第一次出现的位置,返回0开始的下标值;如果字符串2不存在,返回-1
字符串1.index(字符串2) - 获取字符串1中字符串2第一次出现的位置,返回0开始的下标值;如果字符串2不存在,报错
字符串1.find(字符串2,开始下标,结束下标),字符串1.index(字符串2,开始下标,结束下标)
“”"

str1 = 'how are you? i am fine, thank you. and you?'
print(str1.find('you'))   # 8
print(str1.index('you'))  # 8print(str1.find('you1'))    # -1
# print(str1.index('you1')) # 报错
print(str1.find('you', 0, 8)) # -1

4.isdigit,isnumeric
“”"
字符串.isdigit() - 判断是否是纯数字字符串(数字指0~9的数字字符)
字符串.isnumeric() - 判断是否是纯数字字符串(单个数字指具有数字意义的字符)
“”"

print('123456'.isdigit()) #  True
print('2323'.isnumeric()) # True
print('one2323一二三'.isnumeric()) # False
print('2323一二三'.isnumeric()) # True
print('2323一Ⅴ'.isnumeric()) # True

*5.islower,isupper
“”"
字符串1.islower() - 判断字符串是否是纯小写字母字符串
字符.islower() - 判断是否是小写字母

字符串1.isupper() - 判断字符串是否是纯大写字母字符串
字符.isupper() - 判断是否是大写字母
“”"

print('abcs'.islower())   #  True
print('ABCS'.isupper())   #  True

**6.join
“”"
字符串.join(序列) - 将序列中的元素用指定的字符串拼接成一个新的字符串
注意:序列中的元素必须是字符串
“”"

result = '+'.join('abc') # a+b+c
result = 'and'.join('abc')
print(result) # aandbandcresult = '+'.join(['小明','张三']) # 小明+张三
result = ''.join(['小明','张三'])
print(result) # 小明张三s1 = {'a', '1'} # 集合去重后连接在一起
result = ''.join(s1)
print(result) # a1
# **练习:将下面列表中的元素合并成一个字符串(有问题)【推导式+join】【推导式很重要】
# ['abc', 100, 12.5, True, 'hello']  -> 'abc10012.5Truehello'
list1 = ['abc', 100, 12.5, True, 'hello']
result = ''.join(str(x) for x in list1)
print(result)
# **练习2:已经一个列表保存多个学生的分数,提取所有学生的姓名,以一个字符串的形式返回(有问题)【推导式+join】
# [{'name':'张三', 'age': 18}, {'name':'小明', 'age': 20}, {'name':'小花', 'age': 30}]  -> '张三,小明,小花'
students = [{'name': '张三', 'age': 18},{'name': '小明', 'age': 20},{'name': '小花', 'age': 30}
]
result = ','.join(x['name'] for x in students)
print(result)

7.strip, lstrip, rstrip
“”"
字符串.strip() - 去掉字符串两端的空白字符
字符串.lstrip() - 去掉字符串前面的空白
字符串.rstrip() - 去掉字符串后面的空白
“”"

str1 = '    \tabc 123     \n'
result = str1.strip()
print('==', result, '===', sep='')  # ==abc 123===result = str1.lstrip()
print('==', result, '===', sep='')  # ==abc 123     ===result = str1.rsplit()
print('==', result, '===', sep='')  # ==['abc', '123']===

8.replace
“”"
字符串1.replace(字符串2,字符串3) - 将字符串1中所有的字符串2替换成字符串3
字符串1.replace(字符串2,字符串3, N) - 替换前N个
“”"

str1 = 'how are you? i am fine, thank you. and you?'
result = str1.replace('you', 'me')
print(result)      #  how are me? i am fine, thank me. and me?
result = str1.replace('you', 'me', 2) # 替换前2个
print(result)     # how are me? i am fine, thank me. and you?

9.maketrans,translate
“”"
str.maketrans(字符串1,字符串2) - 创建一张字符串1和字符串2的字符对应表
字符串.translate(表)
“”"

举例说明ege:
table = str.maketrans('ain', '你我他') # a->你,i->我,n->他
str1 = 'how are you? i am fine, thank you. and you?'
result = str1.translate(table)
print(result)
# 练习:将字符串中所有的阿拉伯数字都替换成对应的中文数字
# '123木头人,88'  -> '一二三木头人,八八'
table = str.maketrans('0123456789', '零一二三四五六七八九') # 替换所有
str1 = '123木头人,88'
# result = '123木头人,88'.translate(table)
result = str1.translate(table)
print(result)  # 一二三木头人,八八
# 10.rfind,rindex 从后往前找
str1 = 'how are you? i am fine, thank you. and you?'
print(str1.find('you')) #8 从前往后找
print(str1.rfind('you')) #39 从后往前找

11.split
“”"
字符串1.split(字符串2) - 将字符串1中所有的字符串2作为切割点对字符串进行切割
“”

str1 = 'how are you? i am fine, thank you. and you?'
result = str1.split('you')
print(result)  #  ['how are ', '? i am fine, thank ', '. and ', '?']# 注意:如果切割点在最前面或者最后面或者出现连续的切割点,结果会出现空串
str2 = 'mnayoua==a123aklp'
print(str2.split('a'))  # ['mn', 'you', '==', '123', 'klp']
str2 = 'mnayouaa==a123aklp'
print(str2.split('a'))  # ['mn', 'you', '', '==', '123', 'klp']

5、函数的价值

nums = [29, 10, 12, 18, 23]
print(max(nums))

6、认识函数和定义函数

1.认识函数
“”"

  1. 概念:函数就是对实现某一特定功能的代码的封装 - 机器
  2. 函数的分类
    系统函数(系统造好的机器) - 由Python创建好的函数,例如:print,input,type,max,min,id等
    自定义函数(自己造机器) - 由程序员自己创建的函数
    “”"
    def func():
    print(’======’)
    print(’++++++’)
    print(’------’)
    func()
    func()
    func()
    2.定义和函数(创建函数)
    “”"
    语法:
    def 函数名(形参列表):
    函数说明文档
    函数体

说明:
a.def - 关键字;固定写法
b.函数名 - 由程序员自己命名
要求:是标识符;不能是关键字
规范:见名知义(看到函数名大概知道这个函数的功能是什么);
所有的字母都小写,多个单词之间用下划线隔开;
不使用系统的函数名,类名和模块名
c. () - 固定写法
d.形参列表 - 以’变量名1,变量名2,变量名3,。。。‘格式存在。
这儿的每一个变量就是一个形参,如果不需要形参,括号里什么都不用写
形参是用来将函数外部的数据传递到函数内部。(可以理解成连接函数外部和内部的通道)
需不需要形参就看实现函数的功能需不需要额外的数据
e. : - 固定写法
f. 函数说明文档 - 本质就是文档注释’’’’’’,""""""
g. 函数体 - 和def保持一个缩进的一条或者多条语句;
函数体就是实现函数功能的代码

“”"

# 练习1:定义一个函数,求任意两个数的和
def sum2(num1, num2):print(num1 + num2)# 练习2:定义一个函数,求N的阶乘
# N! = 1*2*3*...*N
def factorial(n):result = 1for x in range(1, n+1):result *= xprint(result)

python第二周day5相关推荐

  1. python第二周day3

    python第二周day3(9.24) 1.day7字典作业更改版 # 定义一个列表,在列表中保存6个学生的信息(学生信息中包括: 姓名.年龄.成绩(单科).电话.性别(男.女.不明) ) stude ...

  2. python第二周day2

    python第二周day2(9.23) 1.day6列表作业更改版 import random # 随机操作 # random.randint(0, 100) # **1.创建一个列表,列表中有10个 ...

  3. python第二周基本图形绘制

    #pythonDraw.py(python蟒蛇) import turtle #调用turtle(海龟)库 turtle.setup(650,350,200,200)#(width,height,st ...

  4. Python第二周 str的方法

    str.start #!/usr/bin/env python # Author:Zhangmingda while True:cmd = input('输入字符:')#.strip()print(' ...

  5. 测试python第二周_python第二周作业

    33003000370038003300381586927161642 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬ ...

  6. 测试python第二周_姓名测试打分

    卜易居名字测试打分,为最早开发的姓名测试程序,网络上其它姓名打分网站大都仿照本站,下次访问搜索卜易居即可. 姓名测试打分简介 卜易居姓名测试,按照姓名学五格数理,并结合周易五行相生相克的理念,通过分析 ...

  7. python第二周小测验a答案_大学慕课Python编程基础章节测验答案

    高血压病并发脑出血的常见部位是A.大脑皮质B.脑桥C.小脑D.内囊及基 传递大动力的齿轮,对齿轮的______要求较高. 当检验了切向综合总偏差和一齿切向综合偏差时,可以不必检验______:当检验了 ...

  8. 【python】python第二周作业

    题目 注意:要赋予运算结果和输入值相同的符号 题解 因为时间紧迫,算法没细想,跑出来就行,就这样了. radius = int(input()) if radius < 0:fuhao = -1 ...

  9. Python第二周作业

    作业1:有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币         [10, 8, 5, 3, 27, 99] 作业2:如果两个素数之差为2,这样的两个素数就叫作"孪生数& ...

最新文章

  1. 1013 Battle Over Cities (25分)(用割点做)
  2. BZOJ1833:[ZJOI2010]数字计数——题解
  3. gcc s.lds 使用方法
  4. python面试题_Python面试题大全
  5. mybatis批量夺标添加_MyBatis+MySQL同时执行多条SQL,实现多表插入数据
  6. Portal-Basic Java Web 应用开发框架:应用篇(十三) —— REST Convention
  7. 英语阅读推荐:主题切换控件 ExpressionBuilder
  8. Win10系统,安装虚拟机,是微软自家的 Hyper-V ?还是轻量级的 Virtual Box ?
  9. c#winform使用WebBrowser 大全[超长文转载]
  10. 代码整洁之道(一)最佳实践小结 1
  11. ASP.NET项目中的驼峰格式JSON响应
  12. 机器学习中的算法——决策树模型组合之随机森林与GBDT
  13. 主观赋权法(AHP)和客观赋权法(熵值法)组合权重法
  14. 第二章:minio单机版,使用客户端备份文件
  15. 计算机理论什么是信道容量,(信道容量知识总结.doc
  16. 东华大学计算机854真题
  17. 【Servlet】2:认识一下Web服务器——Tomcat
  18. 【Java】 org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor
  19. C语言中创建自己函数库文件流程
  20. python——偏函数的使用

热门文章

  1. 触发器详解——(二)JK触发器
  2. windows中cmd和powershell设置代理
  3. 个人收藏系列之360个人图书馆 轻松解除网页防复制难题
  4. 练习八:利用有限状态机进行时序逻辑的设计
  5. kubernetes hpa源码分析
  6. Py2neo安装(未完待续)
  7. 前端开发:v-if和v-for的优先级详解
  8. 图片切换的一种简单的方式
  9. 用史上最牛学习法自学编程,不香吗?
  10. gravity mysql_gravity 使用操作。