当前位置: 代码迷 >> 综合 >> Python3.x和Python2.x中的数据类型、输入输出、格式化输出、逻辑符号以及区别
  详细解决方案

Python3.x和Python2.x中的数据类型、输入输出、格式化输出、逻辑符号以及区别

热度:84   发布时间:2023-12-23 02:24:19.0

以下所有的实操全在redhat7.3真机上的python3中


python3脚本语言的编写格式

#coding:utf-8
python2.x:默认使用ASCII编码
python3.x:默认使用UTF-8编码
1.没有分号(编码规范 PEP8)
2.严格按照缩进的语言
print(‘hello python’)
print(‘你好 python’)
ASCII编码和UTF-8编码区别:
Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。
解决方法为只要在文件开头加入 # -- coding: UTF-8 -- 或者 # coding=utf-8 就行了
但是如果是第二种需要注意:# coding=utf-8 的 = 号两边不要空格。

注意:Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。
注意:如果你使用编辑器,同时需要设置 py 文件存储的格式为 UTF-8,否则会出现类似以下错误信息:
在这里插入图片描述


python中的数据类型

变量就是对内存地址空间的一个引用
a = 1
“”"
hello python
“”"

整型

>>> a = 1
>>> print(a)
1
#查看变量的类型
>>> type(a)
<class 'int'>
在这里插入图片描述

浮点型

>>> b = 1.2
>>> print(b)
1.2
>>> type(b)
<class 'float'>
在这里插入图片描述

字符串型
>>> c = westos    #字符串类型需要用引号
Traceback (most recent call last):File "<stdin>", line 1, in <module>
NameError: name 'westos' is not defined
>>> c = 'westos'
>>> print(c)
westos
>>> c = "what's"
>>> print(c)
what's
>>> c = 'what's'   字符串用单引号写的时候,如果有特殊字符需要使用转义字符,否则报错File "<stdin>", line 1c = 'what's'^
SyntaxError: invalid syntax
>>> c = 'what\'s'
>>> print(c)
what's
>>> type(c)
<class 'str'>

在这里插入图片描述
在这里插入图片描述

bool型(只有两个值:True False 非0即真)
>>> a = 1
>>> bool(a)
True
>>> bool(0)
False
>>> bool('')
False
>>> bool(' ')#这是一个空格键,不是空的;
True
>>> bool('redhat')
True

在这里插入图片描述


数据类型之间的转换
>>> a = 1
>>> type(a)
<class 'int'>
>>> float(a)      #这个只是表面是将a转为了浮点型
1.0
>>> type(a)  #实际上还是整型
<class 'int'>
>>> b = float(a)
>>> b
1.0
>>> b = 2.0
>>> int(b)
2
>>> c = 'redhat'  #这是一个字符串型,不能转换成整型,但是数字字符串可以;
>>> int(c)    
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'redhat'
>>> b = 123    #整型可以转换成字符串型;
>>> str(b)
'123'
>>> c = '123'
>>> int(c)
123
>>> a
1
>>> b
123
>>> c
'123'

在这里插入图片描述
在这里插入图片描述

在内存中删除一个变量
>>> del a
>>> a
Traceback (most recent call last):File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> del b
>>> b
Traceback (most recent call last):File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined

在这里插入图片描述


输入输出

#python3.x
#input():接收任意数据类型
#python3.x中没有raw_input()

>>> input('Num:')
Num:2
'2'
>>> input('Num:')
Num:abc
'abc'
>>> input('Passwd:')
Passwd:123
'123'# 输入内容不回显
>>> import getpass
>>> num = getpass.getpass('请输入密码:')
请输入密码:
>>> print(num)
123
#

在这里插入图片描述

#python2.x
#input():只支持正确的数值类型
#raw_input():数值和字符串
>>> input('Num:')
Num:2
2
>>> input('Num:')
Num:1.2
1.2
>>> input('Num:')
Num:redhat
Traceback (most recent call last):
File "<stdin>", line 1, in <module>File "<string>", line 1, in <module>
NameError: name 'redhat' is not defined
>>> raw_input('Num:')
Num:2'2'>>> raw_input('Num:')
Num:1,2
'1,2'
>>> raw_input('Num:')
Num:redhat
'redhat'
>>>
#
#
#
#如果接收到的数值要进行比较的时候,一定要转换为同一种类型
>>> age = input('age:') 
age:19      #默认是字符串,因此需要进行数据类型的转换;
>>> age
'19'
>>> age > 18
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'str' and 'int'
>>> age = int(age)   #将字符串转化成整型
>>> age
19
>>> age > 18
True
>>> age = int(input('age:'))
age:18
>>> age
18
deployment.extensions/httpd rolled back

在这里插入图片描述

在这里插入图片描述


格式化输出
#%s:代表字符串 %d:整型
>>> name = 'westos'
>>> name'westos'>>> age = 12
>>> print('%s的年龄是%d' %(name,age))
westos的年龄是12
>>> age = 18
>>> print('%s的年龄是%d' %(name,age))
westos的年龄是18
>>> age = '19'
>>> print('%s的年龄是%d' %(name,age))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
>>> age = 19.5
>>> print('%s的年龄是%d' %(name,age))
westos的年龄是19

在这里插入图片描述

#浮点型 %f默认是6位

 >>> money=23121312.32314432
>>> name = 'Tom'
>>> print('%s的工资为%f' %(name,money))
Tom的工资为23121312.323144

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

>>> money=60000
>>> print('%s的工资为%f' %(name,money))
Tom的工资为60000.000000
>>> money=60000.99
>>> print('%s的工资为%f' %(name,money))
Tom的工资为60000.990000
>>> print('%s的工资为%.2f' %(name,money))
Tom的工资为60000.99
>>> money=60000
>>> print('%s的工资为%.3f' %(name,money))
Tom的工资为60000.000
#
整数的占位:不够的位数 前面补0
>>> sid = 1
>>> name = 'lily'
>>> print('%s的学号为000%d' %(name,sid))lily的学号为0001
>>> sid = 2
>>> print('%s的学号为000%d' %(name,sid))
lily的学号为0002
>>> sid = 10
>>> print('%s的学号为000%d' %(name,sid))
lily的学号为00010
>>> print('%s的学号为%.5d' %(name,sid))
lily的学号为00010
>>> sid = 1
>>> print('%s的学号为%.5d' %(name,sid))
lily的学号为00001
>>> sid = 20
>>> sid = 100
>>> print('%s的学号为%.5d' %(name,sid))
lily的学号为00100

在这里插入图片描述


百分号的实现
>>> scale = 0.1
>>> print('数据的比例是:%.2f' %(scale))数据的比例是:0.10
>>> print('数据的比例是:%.2f' %(scale * 100))
数据的比例是:10.00
>>> print('数据的比例是:%.2f%' %(scale * 100))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: incomplete format
>>> print('数据的比例是:%.2f%%' %(scale * 100))
数据的比例是:10.00%

在这里插入图片描述

1、练习:

#求平均成绩(python3解释器)
#- 输入学生姓名;
#- 依次输入学生的三门科目成绩;(语文 数学 英语)
#- 计算该学生的平均成绩, 并打印;
#- 平均成绩保留一位小数点;
#- 计算该学生语文成绩占总成绩的百分之多少?并打印。eg: 78%;
在这里插入图片描述
在这里插入图片描述

python2.x #必须是除数或被除数里面有一个是浮点型,在整除时才会出现小数;
>>> 5/2
2
>>> 100/300
0
>>> 5.0/2
2.5
>>> 100/300.0
0.3333333333333333

在这里插入图片描述

python3.x #不需要考虑
>>> 5/2
2.5
>>> 100/300
0.3333333333333333
>>> 

在这里插入图片描述

取余
>>> 5%2
1
取整
>>> 5//2
2>>> a = 1
>>> a = a+1
>>> a
2
>>> a += 1
>>> a
3

在这里插入图片描述

逻辑运算符号(and 、or)

and
1 and 2
两个条件同时满足 就返回True
只要有一个条件不满足,就返回False
or
1 or 2
两个条件只要满足一个 就返回True
两个条件都不满足,就返回False

在这里插入图片描述

Python3.x和Python2.x的区别

python3:
#input():接收任意数据类型
#python3.x中没有raw_input()
#不考虑除数或被除数里面有一个是浮点型,

python2:
#input():只支持正确的数值类型
#raw_input():数值和字符串,不能直接识别字符串;
#必须是除数或被除数里面有一个是浮点型,在整除时才会出现小数;否则就成了整除;