从0开始的python--4.基本数据类型

"""
#数值类型:整型、浮点型、复数
"""
整型:
>>> a = 10
>>> type(a)
<class 'int'>
>>> a
10
>>> a = 999999999999999999999999999999999999999999999999999999999999
>>> type(a)
<class 'int'>
>>> b = 0b11
>>> b
3
>>> c = 0o11
>>> c
9
>>> d = 0x11
>>> d
17
>>> result = bin(10)   二进制转换,返回str
>>> result
'0b1010'
>>> result = oct(10)   八进制转换,返回str
>>> result
'0o12'
>>> result = hex(10)   十六进制转换,返回str
>>> result
'0xa'
>>> int(0b1111)
15
>>> int("23")
23
>>> int("0b11")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '0b11'
>>> int("0b11",base=2)
3
>>> bin(0o22)
'0b10010'
"""
#进制转换器(从键盘接收用户输入,将用户输入的十进制数,转换相应的二进制、八进制、十六进制输出)
"""
num = int(input("please input an number:"))
print("对应的二进制为:",bin(num))
print("对应的八进制为:",oct(num))
print("对应的十六进制为:",hex(num))
"""
"""
浮点型:带小数点
>>> a = 1.2
>>> type(a)
<class 'float'>
>>> 1-0.1-0.1-0.1  
0.7000000000000001
浮点型是不精确的:采用二进制存储

decimal类型(精确):小数部分和整数部分一样的存储
导入标准库:
from decimal import Decimal
mydec = Decimal("3.22")
print(mydec,type(mydec))
"""
"""
>>> a = -5 + 4j  #复数
>>> a
(-5+4j)
>>> type(a)
<class 'complex'>
>>> a.real  实部
-5.0
>>> a.imag  虚部
4.0
"""


#字符串类型
"""
str1 = 'abc'
str2 = "abc"
#三引号可以跨行去定义
# str3 = """
# abc
#          xyz
"""
print(str3,type(str3))

>>> a = 10 
>>> str(a)  把a转换为字符串类型
'10'
!!不要使用内建函数名做标识符
>>> str = 100  str不建议作为变量名赋值,会改变其原有的内建函数功能
>>> str(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable

print = 100
print("hello") print可以,因为不是关键字
"""


#转义字符:
#常见的转义字符:
"""
>>> a = "111\t222"  制表符
>>> a
'111\t222'
>>> print(a)
111     222
>>> a = "111\n222"  换行符
>>> a
'111\n222'
>>> print(a)
111
222
输出引号的几种方式:
>>> a = "111'222"
>>> print(a)
111'222
>>> a = '111"222'
>>> print(a)
111"222
>>> a = '111\'222'
>>> print(a)
111'222
*****************************
>>> a = '111\\t222'   \\代表斜杆\本身
>>> print(a)
111\t222
>>> a = r'111\t222'   前面加个r和\的效果一样,抑制转义   r表示row --> 返回到原生字符
>>> print(a)
111\t222
>>> print("\a")  响铃符
"""

# 字符串是字符序列 -- 凡是序列数据,大部分可以通过下标(索引)或切片来取值
# 字符串的切片处理
# str[start:end:step]
# 1.确定步长step为正还是为负  默认是1,为正
# 为正:从左往右截取  为负:从右往左截取
# 2.确定start和end的位置,start在截取方向上要在end的前面
# 3.确定步长
"""
str1 = "abcdefghijk"
print( str1[3] )      #结果是d,正向编号从0开始,反向从-1开始
print( str1[1:6] )    #取1-6之间的数,左闭右开区间,包括1但是不包括6
print( str1[:6] )     #省略了开头(0)
print( str1[2:] )     #从下标为2的c开始一直到结束
print( str1[2:9:2] )  #从下标2取到9(不包括9),步长为2
print( str1[-9:-2] )  #从前往后截取
print( str1[-2:-9:-2] ) #从后往前截取
print( str1[::-1] )   #反向输出字符串
"""


# 字符串类型和其他类型的转换
"""
>>> a = "10"
>>> int(a)
10
>>> a = "2.3"
>>> float(a)
2.3
>>> b = 4.3
>>> str(b)
'4.3'
>>> c = 10
>>> str(c)
'10'
>>> str(10)
'10'
"""


#字符串的拼接 (+号)
"""
str1 = "abc" "xyz"  #字符串的级联,会自动拼接在一起
print(str1)
str2 = "abc" + "xyz" #和级联差不多
print(str2)
str3 = "abc" * 3 #把字符串abc重复3遍
print(str3)
"""


#字符串的格式化
"""
name = input("please input your name:")
sex = input("please input your sex:")
age = input("please input your age:")
str2 = "my name is %s, my sex is %s, my age is %s"%(name,sex,age)
print(str2)      

# %s(str) 标志位 -- 控制输出格式  
%d -- 十进制表示
%b -- 二进制表示
%o -- 八进制表示
%x -- 十六进制
%f -- 浮点数表示
%.2f -- 保留两位小数
%% -- 百分号本身
number = 14
print("number is: %d"%number)  #14
print("number is: %x"%number)  #e
print("number is: %f"%number)  #14.000000
print("number is: %.2f"%number)#14.00
"""
# 0.45234 -- 百分数 -- 45.23%
"""
num = 0.45234
print("number is: %.2f%%"%(num*100))
#format格式化(一般使用这个)(字符串自带的方法)
"""
"""
name = input("please input your name:")
sex = input("please input your sex:")
age = input("please input your age:")
str2 = "my name is {}, my sex is {}, my age is{}".format(name,sex,age)
print(str2)
str2 = "my name is {1}, my sex is {0}, my age is{0}".format(name,sex,age)
#根据下标传参,0下标表示第一个,以此类推
print(str2)
str2 = "my name is {username}, my sex is {usersex}, my age is{userage}".format(username=name,usersex=sex,userage=age)
# 位置参数传参
print(str2)   
str2 = "my name is {username:>10}, my sex is {usersex:>10}, my age is{userage:>10}".format(username=name,usersex=sex,userage=age)
# 输出数据10字符宽度,右对齐
##############################
1.参数位置方式传递=>在{}中使用它的序号,序号从0开始
2.参数关键字方式传递=>在{}中使用在传递时给它的名字
3.传递的参数可以重复使用
4.格式化通用格式:{变量:[填充字符][对齐方式][宽度][格式]}
         填充字符:一个字符
         对齐方式:< 左对齐, > 右对齐,^ 居中
         宽度:数字
         格式:s,d,x,f
############################
输出一个浮点数据,保留两位 小数(10位宽度,2位小数位)
print("{num:10.2f}".format(num=1/3))
print(f"{1/3:10.2f}")
"""
# f 标志位格式化(只有python3支持)
"""
name = input("please input your name:")
sex = input("please input your sex:")
age = input("please input your age:")
print(f'my name is {name}, my sex is {sex}, my age is{age}')
"""

# python字符串的常用属性方法
# 查看字符串有哪些方法
# print(dir(str))
# 查看某个方法的具体使用
help(str.count)
# count(...)
#     S.count(sub[, start[, end]]) -> int
# [] : 表示这是一个可选项
# <> : 表示必填项
# -> int : 这个函数/方法的返回结果是一个int类型
"""
print( dir("abc") )
# 变量.属性名 的方式 => 使用字符串对象的一系列属性方法
str1 = "abc"
print(str1.upper())
# 1.判断系列(is开头)(返回值为 ture/false):
print( f"判断是否全为大写:{'ABC'.isupper()}" )
print( "判断是否全为数字:","123".isdigit() )      #不包含中文数字
print( "判断是否全为数字:","123一".isnumeric() )  #包含中文数字
print( "判断是否全为数字和字母:","123abc".isalnum() )  #中文也会被算作字母
print( "判断是否为title格式(首字母大写,其他字母小写):","The World".istitle() )
num1  = input("please input an number:")
if num1.isdigit():  #判断是数字再转换整型,否则不转换
    print( int(num1) + 10 )
print( "判断字符串是否以xx开始:","xxxxxabc".startswith("xx",3,6) )  #判断下标为3到6这段是否以xx开头
#2.查找统计类:
#长度:
print( len("abcdef") ) #len属于内置函数,不是统计方法
#字符出现次数:
print( "aaabcddfefd".count("aa") )
#查看字符第一次出现的下标位置,没有这个查找的字符串就会报错:
print( "abcxyx".index("x") )    #
#查看字符第一次出现的下标位置,没有这个查找的字符串就会返回-1:
print( "abcxyx".find("u") )
"""


#字符串的遍历
"""  
str1 = "kalkeknkandmlmle^ke*9"
for i in str1:
    print("***********")
    print(i)
"""
"""
#接收用户从键盘的输入,判断键盘输入的子字符串在str1里出现的次数,不使用字符串count属性统计
str1 = "kalkeknkandmlmle^ke*9"
num = 0
n = input("请输入你要查询的字符:")
for i in str1:
    if i == n:
        num = num + 1
print("该字符出现的次数为:",num)
"""
#统计字符串中出现次数最多的字符,可以使用count统计次数
"""
str1 = input("请输入字符串:")
max = 0
for i in str1:
     num = str1.count(i)
     if num > max:
        max = num
        maxstr = i
print("出现次数最多的字符为:",i)
print("出现的次数为:",max)
"""

#3.字符串转换类
# 忽略大小写 -- 全部转化为大写或者全部转换为小写
"""
>>> "abc".upper()
'ABC'
>>> "ABC".lower()
'abc'
>>> "the world".title()
'The World'
"""
#while循环:条件为真就一直循环
"""
count = 1
while count < 6:
    print(count)
    count += 1  #count = count + 1
    if count == 3:
        break   #打破这层循环
#忽略大小写 -- 全部转化为大写或者全部转换为小写
print("welcome to sctl")
print("1.登陆")
print("2.注册")
while 1:  #while循环,条件为真就一直循环
    options = input("请输入你的选择(按q退出):")
    if options == "1":
        print("登陆成功!")
    elif options == "2":
        print("注册成功")
    elif options.lower() == "q":  #忽略大小写 -- 全部转化为大写或者全部转换为小写
        break
    else:
        print("请重新输入")
"""
"""range的用法
for i in range(2,10):   #range表示从2取到9 左闭右开区间
    print(i)
for i in range(10):     #从0取到9 
    print(i)
"""

#字符串的切割:split(默认是空白切割)(返回的是一个列表)
"""
userinfo = "luojie:female:20"
result = userinfo.split(":")   #":"表示根据:切割
print( result[2] )            #[]来获取下标为2的元素
"""
#字符串的拼接:join方法
"""
lst = ["aa","xyz","777"]
#把列表里面的每个元素拼接成大字符串
result = "*".join(lst)  #用*号把lst里面的元素连接在一起
print(result)
print("".join(lst))    #用空字符串把lst里面的元素连接在一起
"""
#去除首尾空白字符串
"""
options = input("please input an number:").strip()  #默认去除首尾空白
if options == "1":
    print("options is 1")
options = input("please input an number:").strip("*")  ##去除首尾*
if options == "1":
    print("options is 1")
"""
#替换 -- replace
# result = "xxxyy".replace("x","%") #replace(要替换的字符串,新字符串)
# print(result)
#填充
# print("欢迎进入sctl系统".center(50,"*")) #填充成50个字符(加上原始字符),用*填充
# print("1、登陆".ljust(10,"*"))  #ljust左边填充
# print("2、注册".rjust(10,"*"))  #rjust右边填充

#字符串的常用方式👆

#练习:
"""
s = "i,am,luojie"
s1 = s.replace(","," ")
result = s.split(",")
print(result)
print(s1)
print(result[2])
print(s.upper())
print(s.lower())
"""


#布尔类型(只有 True 和 False)
"""print(bool()) 查看一个数的布尔值
哪些值布尔值为假
• '', 0, 0.0, (), [],{},None, False
• None是一个特殊的常量,表示一种特殊的数据类型(NoneType)
哪些值布尔值为真
• 除了为假的,其他的都为真(空格也是!)
###布尔值可以参与计算###
True -- 1
False -- 0
>>> "abc".isalpha() + "abc".isupper()
1
"""
#abcd四名犯罪嫌疑人
# 其中有一个是小偷,受到审讯
# a 我不是小偷
# b c是小偷
# c 小偷是d
# d c胡说
# 其中只有一个人说假话,谁是小偷?
"""
str1 = "abcd"
#用x表示小偷
for x in str1:
    if ("a" != x) + ("c" == x) + ("d" == x) + ("d" != x ) == 3:
        print(x)
"""
# None -- 表示什么都没有 -- NoneType -- 为假
"""
result = print("xxxxx")
# AttributeError: 'NoneType' object has no attribute 'isdigit'
result.isdigit() #常见的错误👆
print(result)
"""

# 整型 浮点型 复数 字符串 布尔类型 NoneType  -- 基本数据类型

# 常量:常量是指一旦初始化后就不能修改的固定值(理论上没有,但是约定俗成)
"""
在Python中表示一个常量通常用大写(约定俗成,非强制)表示,如:PI=3.1415926
"""

# 可变数据类型 vs 不可变数据类型
# 在于能不能在原内存空间上去修改值
# 可以修改 -- 可变数据类型(列表)
# 不能修改 -- 不可变数据类型(字符串)
# 字符串属于不可变数据类型



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值