文章目录

  • 字符串
    • 字符串的创建和赋值
      • 转移符号
    • 字符串 的基本特征
      • 连接操作符和重复操作符
      • 成员操作符
      • 正向索引和反向索引
      • 切片
      • 可迭代对象/for循环
      • 练习判断一个字符串是否为回文字符串
        • 方法一:
        • 方法二:
    • 字符串的内建方法
      • 字符串的判断与转化
        • 字符串的判断
        • 字符串的转换
        • 字符串开头和结尾的判断
      • 字符串的数据清洗
      • 字符串的位置调整
      • 字符串的搜索与统计
      • 字符串的分割和连接
        • 练习:随机生成100个验证码:
    • 设计一个题目,用来实现帮助小学生进行算术运算练习
      • 代码优化
      • 优化方向

字符串

字符串的创建和赋值

字符串String是由 数字, 字母, 下划线,组成的一串字符。python里面最常见的类型。可以简单的通过在引号间(单引号,双引号和三引号)包含字符串的方式创建它。

转移符号

一个反斜线加一个可以表示一个特殊字符,通常是不能打印的字符

重点演示:

字符串 的基本特征

连接操作符和重复操作符

# Pycharm常用快捷键:格式化代码符合PEP8风格(Ctrl+Alt+L)
# 1.连接操作符和重复操作符
name = 'westos'
print('hello' + name)
# print('hello' + 1 )#不同数据类型是不能相加的
print('hello' + str(1))
print("*" * 30+ '学生管理系统' + '*' * 30)

成员操作符

# 2. 成员操作符
s = 'hello westos'
print ('westos' in s) #True
print('westos' not in s) #False
print('x' in s)
#返回的是bool值

正向索引和反向索引

# 索引(s[i]) : 获取特定的偏移元素
# 索引的分类: 正向索引和反向索引
# 3.正向索引和反向索引
s = 'WESTOS'
print(s[0]) # 'W'
print(s[3]) # 'T'
print(s[-2]) # 'O'

切片

# 4.切片
"""
回顾 :
range(3):[0, 1, 2]
range(1,4):[1, 2,  3]
range(1,6,2):[1, 3, 5]
切片: 切除一部分内容s[start:end:step]s[:end:]s[start:]
"""
# 总结:
# s[:n]拿出前n个元素
# s[n:]除了前n个元素,其他元素保留
# s[:] 从头开始访问一直到字符串结束的位置
# s[::-1] 倒叙输出
s = 'hello westos'
print(s[1:3]) # el
print(s[:3])  # hel
print(s[:5])  #拿出字符串的前5个字符
print(s[1:])  #ello westos
print(s[2:])  #llo westos
print(s[:]) #拷贝字符串(存在字符串的驻留机制)
print(s[::-1])

可迭代对象/for循环

#  5.for循环语句
s = 'westos'
count = 0
for item in s:count += 1print(f"第{count}个字符:{item}")

练习判断一个字符串是否为回文字符串

方法一:

s = input('输入字符串:')
if s == s[::-1] :print("是回文字符串")
else:print("不是回文字符串")

方法二:

优化方法

s = input("输入字符串:")
result = "回文字符串" if s == s[::-1] else "不是回文字符串"
print(s+result)

字符串的内建方法

字符串的判断与转化

字符串的判断

# 1.类型的判断
s = 'Hello westos'
s1 = "hellowestos"
s2 = "HAT"print(s.isalnum())#是否为字符串或数字?  false 中间存在空格
print(s.isalpha())#是否为字母?         false
print(s.isdigit())#是否为数字?         false
print(s1.islower())#是否为小写字母?     True
print(s.isspace())# 是否为空格          false
print(s.istitle())# 是否为标题          false
print(s2.isupper())# 是否为大写字母      True
print(s.isdecimal())  # 是否为十进制字符? False

字符串的转换

# 2 .类型的转化print ('hello'.upper())  #转换成大写字母
print ('hello WESTOS'.lower()) #转换成小写字母
print ('hello westos'.title()) #转换成标题
print ('hello westos'.capitalize()) #转换成首字母大写,其他字母小写
print ('hello wEstos'.swapcase())   #大小写反转

字符串开头和结尾的判断

# 判断startswith(开头)
url = 'http://www.baidu.com'
if url.startswith('http'):# 具体实现爬虫,感兴趣的话可以看request模块。print(f'{url}是一个正确的网址,可以爬取网站的代码')# 判断endswith结尾
#常用的场景: 判断文件类型
filename = "hello.png"
if filename.endswith('.png'):print(f'{filename}是图片文件')
elif filename.endswith('mp3'):print(f'{filename}是音乐文件')
else :print(f'{filename}是未知文件')

字符串的数据清洗

cmd交互式环境执行

'hello'
>>> " hello ".strip()
'hello'
>>> " hello ".lstrip()
'hello '
>>> " hello ".rstrip()
' hello'
>>> "he     llo".replace(" ","")
'hello'

字符串的位置调整

"学生管理系统".center(10)
'  学生管理系统  '
"学生管理系统".center(10, "*")
'**学生管理系统**'
"学生管理系统".center(10, "-")
'--学生管理系统--'
"学生管理系统".ljust(10, "-")
'学生管理系统----'
"学生管理系统".rjust(10, "-")
'----学生管理系统'

在pycharm中需要打印输出才能有显示

print("学生管理系统".center(10))
print("学生管理系统".center(10, "*"))

字符串的搜索与统计

交互模式下执行

>>> s = "hello westos"
>>> s.find("llo")
2
>>> s.index("llo")
2
>>> s.find("xxx")
-1
>>> s.index("xxx")
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: substring not found
>>> s.count("sss")
0
>>> s.count("ll")
1
>>> s.count("e")
2
>>>

find 如果找到子串,则返回子串开始的索引位置。否则返回-1
index如果找到子串,则返回子串开始的索引位置。否则报错(抛出异常)。
dir(s) ##查看s的方法

字符串的分割和连接

>>> ip = "172.25.254.40"
>>> item = ip.split('.')
>>> item
['172', '25', '254', '40']
>>> #拼接
>>> item
['172', '25', '254', '40']
>>> #将四个数字用-拼接起来
>>> "-".join(item)
'172-25-254-40'

练习:随机生成100个验证码:

要求:2个数字4个字母
实现流程

random.choice("0123456789")
'2'
>>> import string
>>> string.digits
'0123456789'
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> random.sample(string.ascii_letters, 4)
['Z', 'C', 'S', 'd']
>>> random.sample(string.ascii_letters, 4)
['q', 'l', 'C', 'n']
>>> "".join(random.sample(string.ascii_letters, 4))
'ENuc'
>>> random.sample(string.digits,2)"".join(random.sample(string.ascii_letters, 4))File "<stdin>", line 1random.sample(string.digits,2)"".join(random.sample(string.ascii_letters, 4))^
SyntaxError: invalid syntax
>>> random.sample(string.digits,2) + "".join(random.sample(string.ascii_letters, 4))
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list
>>> "".join(random.sample(string.digits,2)) + "".join(random.sample(string.ascii_letters, 4))
'82hCdU'
>>> "".join(random.sample(string.digits,2)) + "".join(random.sample(string.ascii_letters, 4))
'28VQnf'


实现代码:

import string
import random
for i in range(100):print("".join(random.sample(string.digits,2)) + "".join(random.sample(string.ascii_letters, 4)))

快捷操作:
pip install ipython 可以对命令进行补全

设计一个题目,用来实现帮助小学生进行算术运算练习

题目要求:
“”"
设计一个题目,用来实现帮助小学生进行算术运算练习
具体功能:
提供基本算数运算(加减乘)的题目,每到题目中的操作数是随机产生的,
练习者根据显示的题目输入自己的答案,程序自动判断输入的答案是否正确
并显示相应的信息。最后显示正确率。
“”"

import   randomcount = int(input("请输入练习的题目数量:", ))
right_count = 0
for i in  range(count ) :num1 = random.randint(1, 10)num2 = random.randint(1, 10)symbol = random.choice(["+", "-", "*", "/"])question = f"{num1} {symbol} {num2} = ?"print(question)i += 1if symbol == '+':result = num1 + num2elif symbol == '-':result =num1 - num2elif symbol == '*':result = num1 * num2else :result = num1 / num2user_answer = float(input("Answer:"))if user_answer == result:print("Right")right_count += 1else:print("Error")
print("Right percent: %.2f%%" %(right_count/count*100))

代码优化

import   randomcount = int(input("请输入练习的题目数量:", ))
right_count = 0
for i in  range(count ) :num1 = random.randint(1, 10)num2 = random.randint(1, 10)symbol = random.choice(["+", "-", "*", "/"])question = f"{num1} {symbol} {num2} = ?"print(question)i += 1result = eval(f'{num1}{symbol}{num2}')user_answer = float(input("Answer:"))if user_answer == result:print("Right")right_count += 1else:print("Error")
print("Right percent: %.2f%%" %(right_count/count*100))

优化方向

判断 num1 能否整除 num2
否则存在的无穷无尽的小数

PYthon的基本数据类型(创建和赋值,基本特征,内建方法)相关推荐

  1. python和R数据类型查看、赋值、列表、for循环、函数用法对比示例

    python和R数据类型查看.赋值.列表.for循环.函数用法对比示例 很多工程师可能刚开始的时候只熟悉python或者R其中的一个进行数据科学相关的任务. 那么如果我们对比这学习可以快速了解语言设计 ...

  2. python创建文件对象的函数_Python 文件对象常用内建方法

    学习python教程文件操作时,除了 文件对象读取内容 file.read(size):size为读字节的长度,默认为-1. file.readline(size):逐行读取,如果定义了size参数, ...

  3. python定义一个全局字典_Python字典操作详细介绍及字典内建方法分享

    创建 方法一: >>> dict1 = {} >>> dict2 = {'name': 'earth', 'port': 80} >>> dict ...

  4. Python基本语法_集合set/frozenset_内建方法详解

    目录 目录 前言 软件环境 可变集合Set set函数创建集合 创建空集合 集合元素的唯一性 集合推导式 set类型对象的内置方法 add增加一个元素 remove删除一个元素 pop随机删除并返回一 ...

  5. python基础30个常用代码大全-Python3列表内置方法大全及示例代码小结

    Python中的列表是简直可说是有容乃大,虽然看似类似C中的数组,但是Python列表可以接受任意的对象元素,比如,字符串,数字,布尔值,甚至列表,字典等等,自由度提升到一个新的高度,而Python也 ...

  6. python内建方法

    在help文档中查看方法的参数时: 在'/'之前的参数都是位置参数 在'/'与'*'之间的参数可以被用作位置参数和关键字参数 在'*'之后的参数只能是关键字参数 我们可以使用dir(__builtin ...

  7. python类中的函数调用关系_Python中类的内置方法与继承关系实例

    1.类的内置方法 Python内部类: 所谓内部类,就是在类的内部定义的类,主要目的是为了更好的抽象现实世界. 例子: 汽车是一个类,汽车的底盘轮胎也可以抽象为类,将其定义到汽车内中,而形成内部类, ...

  8. Python之路(第二十七篇) 面向对象进阶:内置方法、描述符

    一.__call__ 对象后面加括号,触发执行类下面的__call__方法. 创建对象时,对象 = 类名() :而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()( ...

  9. 【Python】CSV,TSV语料读取的简单操作——内建包csv的使用

    背景 在做文本相关的任务时,难免会遇见csv,tsv等格式的数据,但有时只是读取,然后传入到下一个任务中而已,并不会做过多的操作.在这种情况下,可以使用pandas读取,但是难免有些臃肿,还引入了pa ...

最新文章

  1. PowerShell图形化编程1-原理
  2. Android之linux基础教学之七 中断下半部之软中断
  3. java多线程详细讲解_Java多线程例子讲解
  4. 2015计算机应用基础平时作业答案,2015秋《计算机应用基础》第一次作业
  5. Strange Partition CodeForces - 1471A
  6. java biginteger 运算_Java大数字运算之BigInteger 原创
  7. 论文学习: Journaling of Journal is (almost) Free 未整理
  8. 联想电脑锁屏壁纸的缓存目录,历史壁纸+当前显示的锁屏壁纸,珍藏一下!
  9. 【火炉炼AI】机器学习052-OpenCV构建人脸鼻子眼睛检测器
  10. WIN10和MAC OS双系统,调整MAC os分区给WIN10系统扩C盘
  11. Android 注解处理器使用攻略
  12. async/await的用法
  13. fedora17 安装配置
  14. 「区块链+数字身份」:身份认证的新战场,让子弹再飞会儿
  15. 学习管理!!中国历史上最经典的7个智慧案例
  16. 工程流体力学笔记暂记18(二元漩涡的速度和压强分布)
  17. 2018百度秋招一面/二面/三面
  18. [bzoj4889] [Tjoi2017]不勤劳的图书管理员
  19. K8s(Kubernetes)虚拟机安装
  20. 2014,写给25岁的自己

热门文章

  1. 可调时钟的闹钟模式(接上篇)
  2. util.inherits
  3. 缓存型数据库Redis的配置与优化
  4. 不要再纠结React与Vue的好坏这个问题了
  5. 【博客468】ECMP(等价多路径)环境下链路偶发故障排查
  6. 中国无机微孔吸附剂市场趋势报告、技术动态创新及市场预测
  7. 将接收的二进制流转换成图片保存
  8. NET程序员讨论技术群
  9. foreach循环遍历
  10. 服务器装系统崩溃,服务器系统崩溃不要慌,因为我用了这招!