从零开始学习python 4(持续更新ing)

一、数据类型 -- 数值(number)

1.1 概念

在python3中,支持int float bool complex。数值数据类型的赋值和计算很直观,和我们大多数语言一样的。

(1)整数(int)

包括正整数、负整数、零,没有小数点的数字,也可以使用十六进制、八进制显示。

小整数池的概念:

在Python中,小整数池是一个内置的机制,它确保了在CPython解释器中,对于某些特定范围内的整数,不同的变量可以同时指向同一个对象。这个范围默认是-5到256,但是可以通过Python源码修改这个范围。这个机制主要是为了优化内存和提升性能。

在python中不需要事先规定数据类型以此分配内存单元,所以在python中没有固定的取值范围,python存储的整数可以无限大、无限小。

(2)浮点数(float)

就是小数,带有小数点的数。

inf 无限大

-inf 无限小

NaN 不是数字

a = float('inf')
b = float('-inf')
c = float('NaN')
print(a, b, c)

注意:计算机对于浮点数的计算是不精确的。保存在计算机中的都应该是二进制,而二进制对于整数的表示是精确的,对于小数的表示是不精确,只能非常接近这个数。

在进行浮点数的计算的时候,一定要特别小心。

(3)布尔值(bool)

只有两个值 True False。

a = 0
b = 10
c = a and b
print(type(c))
print(c)

d = bool(a and b)
print(type(d))
print(d)

布尔值短路现象 

# e = 100<200 and 50<(3/0)        #and          条件1为真      条件2需要判断

# print(e)

# e = 100>200 and 50<(3/0)        #and          条件1为假      条件2不需要判断

# print(e)

# e = 100<200 or 50<(3/0)           # or            条件1为真      条件2不需要判断

# print(e)

(4)复数(complex)

        复数由两部分——实部和虚部组成,用 a + bj的形式表示,也可以使用内置函数complex(a,b)表示。其中a和b都是小数。

可以执行百度复数的应用场景或者应用价值【了解即可】。

comp_1 = 3+5j
print(comp_1)
print(type(comp_1))

comp_2 = complex(3,5)
print(comp_2)
print(type(comp_2))

1.2 数字类型的转换 

在使用Python语言中数据类型的转换分为显式转换和隐式转换,

隐式类型转换在程序计算的时候自动发生比如使用1.0+1最终隐式类型转换为浮点数2.0。

显式类型的转换可以使用以下函数完成。

练习 1.输入一个单字符,判断是大写字母输出对应小写字母, 是小写字母输出对应大写字母, 是数字字符输出对应整数, 是其他字符直接输出。 

char = input("请输入一个字符:")
if "A" <= char <= "Z":
    print(char.lower())
elif "a" <= char <= "z":
    print(char.upper())
elif "0" <= char <= "9":
    print(ord(char)-48)
else:
    print(char)

1.3 数学函数 

函数

返回值 ( 描述 )

abs(x)

返回数字的绝对值,如abs(-10) 返回 10

ceil(x)

返回数字的上入整数,如math.ceil(4.1) 返回 5

exp(x)

返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045

fabs(x)

以浮点数形式返回数字的绝对值,如math.fabs(-10) 返回10.0

floor(x)

返回数字的下舍整数,如math.floor(4.9)返回 4

log(x)

如math.log(math.e)返回1.0,math.log(100,10)返回2.0

log10(x)

返回以10为基数的x的对数,如math.log10(100)返回 2.0

max(x1, x2,...)

返回给定参数的最大值,参数可以为序列。

min(x1, x2,...)

返回给定参数的最小值,参数可以为序列。

modf(x)

返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。

pow(x, y)

x**y 运算后的值。

round(x [,n])

返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。

其实准确的说是保留值将保留到离上一位更近的一端。

内置函数‌:内置函数是Python自带的函数,不依赖于任何对象,可以直接在任何地方调用。常见的内置函数如len(), type(), max()等。内置函数用于执行一些通用的操作,比如获取序列的长度、找出最大值等‌。

‌内置方法‌:内置方法是与特定对象(如列表、字符串、字典、模块等)相关联的函数。它们的调用需要在特定对象上进行‌。

import math
print(abs(-10))
print(max(1,12,3,4,5))
print(min(1,12,3,-4,5))
print(pow(10,2))
print(round(3.1415, 2))

print(math.fabs(-3.1415))
print(math.ceil(4.1))
print(math.floor(4.1))
print(math.exp(1))
print(math.log(100,10))
print(math.log(8,2))
print(math.modf(3.1415))

二、数据类型 -- 字符串(string) 

2.1 概念

 在python中用单引号或双引号引起来的内容。

s = 'xiaoming'
s = "xiaoming"
s = ''        #空字符串
s = ""        #空字符串
s = '     '   #空格字符串
s = "     "   #空格字符串

注意:

(1)Python语言中,单引号与双引号都没有任何区别

(2)一对单引号中可以包含 双引号

(3)一对双引号中可以包含 单引号

(4)若想在单引号中包含单引号、双引号包含双引号,使用 \ 转义字符处理

2.2 字符串访问 

2.2.1 下标索引

所谓的下标,就是人为的编号【从0开始】,就像你去洗澡,澡堂大厅里面有存物柜,店员给你一个手环,该手环对应储物柜的编号。

s = "hello world"

# 通过元素遍历
for i in s:
    print(i, end=' ')
print()

# len(s) 计算字符串s的长度 为 7
# range(len(s))  range(7)  区间从0到6
# 通过下标、编号进行遍历
for i in range(len(s)):
    print(s[i], end=' ')    # i是下标 编号  s[i]通过下标i找到的元素
print()

练习题:

长度为三且各字符不同的子字符串,我们称这个字符串为好字符串, 给你一个字符串s,请你返回s中长度为3的好子字符串的数量,

注意:如果相同的好子字符串出现多次,每一次都应该被记录答案之中, 子字符串是一个字符串中连续的字符序列

s = 'hello'

好子字符串:hel

s = 'helloworld'

好子字符串:hel low wor orl rld 

str = "helloworld"
for i in range(len(str)-2):
    if str[i]!= str[i+1]!=str[i+2]:
        print(str[i]+str[i+1]+str[i+2],end=' ')

2.2.2 切片

切片是对操作对象的某一部分进行操作。对象可以是字符串、列表、元组等。

标识符[起始值:终止值:步长值]

注意:和range函数一样,区间是前闭后开的。

[起始值 , 终止值) 包含起始值 不包含终止值

 在python中看见 [:] 一定是切片

切片中的默认值

s = "hello world"
#没有冒号,就是单纯的下标,取到一个元素值
print(s[0])     
#省略终止值,默认是序列的结尾  和range函数有区别
print(s[0::1])  
#省略起始值,默认是 0
print(s[:3:1])  
#省略步长值,默认是 1
print(s[1:3:])  
print(s[::])

切片练习题

1. 从键盘输入一个字符串,判断这个字符串是不是回文字符串【使用切片】 回文字符串:就是正着读和倒着读一样的字符串。 

s=input("enter the string:")
if s==s[::-1]:
    print("是回文字符串")
else:
    print("不是回文字符串")

2. 从键盘输入一个字符串,判断这个字符串是不是回文字符串【使用下标】 回文字符串:满足对称性,第一个字符和倒数第一个字符相等, 第二个和倒数第二个字符相等……

s=input("enter the string:")
for i in range(len(s)//2):
    if s[i]!=s[-i-1]:
        print("不是回文字符串")
        break
else:
    print("是回文字符串")

2.3 字符串的相关函数

2.3.1 查询相关函数

函数

描述

find()

检测字符串是否包含指定字符,如果是返回开始的索引值,否则返回-1

index()

检测字符串是否包含指定字符,如果是返回开始的索引值,否则提示错误

rfind()

从右向左,检测字符串是否包含指定字符,如果是返回开始的索引值,否则返回-1

rindex()

从右向左,检测字符串是否包含指定字符,如果是返回开始的索引值,否则提示错误

s = 'hello world'
print(s.find('l'))
print(s.find('lo'))
print(s.find('xxxx'))
print('*'*30)
print(s.index('l'))
print(s.index('lo'))
# print(s.index('xxxx')) 报错
print('*'*30)
print(s.rfind('l'))
print(s.rfind('lo'))
print(s.rfind('xxxx'))
print('*'*30)
print(s.rindex('l'))
print(s.rindex('lo'))
# print(s.rindex('xxxx')) 报错

2.3.2 转换函数 

函数

描述

lower()

将字符串转换为小写

upper()

将字符串转换为大写

title()

将字符串中每个单词的首字母大写

capitalize()

只讲字符串的首字母大写,其他字母全部小写

strip()

去除字符串两端的空格

s = 'hello world'
print(s.lower())
print(s.upper())
print(s.title())
print(s.capitalize())

s1 = "    aaaa  bbbb  cccc    "
print(s1.strip())

练习题: 从键盘输入一个字符串,遍历该字符串,将其中的小写字母变大写字母, 大写字母变小写字母。 

s=input("enter the string:")
for i in s:
    if i.isupper():
        print(i.lower(),end="")
    elif i.islower():
        print(i.upper(),end="")
    else:
        print(i,end="")
print()

 2.3.3 判断函数

函数

描述

startswith()

检查字符串是否是以 obj 开头, 是则返回 True,否则返回 False

endswith()

检查字符串是否是以 obj 结尾, 是则返回 True,否则返回 False

isspace()

如果 str1 中只包含空格,则返回 True,否则返回 False.

isalnum()

如果 str1 所有字符都是字母或数字则返回 True,否则返回 False

isdigit()

如果 str1 只包含数字则返回 True 否则返回 False

isalpha()

如果 str1 所有字符都是字母 则返回 True,否则返回 False

练习题: 1、从键盘输入一串字符串,先将所有大写转换成小写, 再移除其中的非数字字母字符之后,判断是不是回文字符串 

s=input("enter the string:")
str=''
s=s.lower()
for i in range(len(s)):
    if s[i].isalnum():
        str +=s[i]
if str==str[::-1]:
    print("是回文字符串")
else:
    print("不是回文字符串")
print(str)

2.3.4 分割函数 

函数

描述

partition

可以将字符串以str1进行分隔成三个部分

rpartition

从右向左,可以将字符串以str1进行分隔成三个部分

split

不包含分隔符,如果maxsplit有指定值,则仅分割 maxsplit 个子字符串

splitlines

按照行分隔,返回一个包含各行作为元素的列表

s = 'hello world china ShangHai'
s1 = s.partition('china')
print(s1, type(s1))

s2 = s.split('china')
print(s2, type(s2))

s3 = s.split(' ')
print(s3, type(s3))

m = 'hello\nworld\nchina\nShangHai'
s4 = m.splitlines()
print(s4, type(s4))

2.3.5 其他函数 

函数

描述

count

返回str1在string中指定索引范围内[start,end]出现的次数

join

是使用某个字符串作为拼接符

print( 字符串.join(变量) )

replace

将string中的str1替换成str2,如果指定count,则不超过count次

len

返回字符串的长度值

练习题1:

a) 将"good good study , day day up;"保存到变量mstr中。

b) 将"  No Pain No Gain.  "保存到变量nstr中。

c) 将mstr和nstr合并,并输出。

d) 求mstr的长度并输出

e) 遍历字符串nstr

f) 统计nstr中字母'o'的个数

g) 去除nstr两端的空格

h) mstr所有的字符换成大写并输出。

i) mstr所有的字符换成小写并输出。

j) 以空格为分割符将mstr分割并输出。 

mstr="good good study , day day up;"
nstr="  No Pain No Gain.  "
print(mstr+nstr)
print(len(mstr))
for i in nstr:
    print(i,end=" ")
print(nstr.count('o'))
print(nstr.strip())
print(mstr.upper())
print(mstr.lower())
print(mstr.split())

练习题2: 输入两个字符串,从第一个字符串中删除第二个字符串中所有字符。

例如:输入"abcde"和"be" 字符串变为"acd" 提示:

①使用in关键字判断元素存在

②使用replace内置方法进行元素替换 

a="abcde"
b="be"
for i in b:
    a=a.replace(i,"")
print(a)

练习题3: 输入一个字符串,将这个字符串按照单词反序。

例如:输入"this is a book" , 输出 "book a is this" 。 

a="this is a book"
b=a.split()[::-1]
print(" ".join(b))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值