python基础之数据类型输入输出进制转换运算符表达式随机数

python 基础二

@ Python基本数据类型、输入输出、进制转换、运算符、表达式、if语句、随机数

1.python基本数据类型

"""
str     int   float complex  bool   list dict tuple set bytes None
字符串  整型  浮点型  复数   布尔型  列表  字典  元组  集合  字节  空值
"""

2.输入输出
print(values,sep,end,file,flush)

  • values : 表示要输出的数据,可以是0个,可以是1个或者多个
  • sep : 分隔符,默认为空格,可以将多个数据分隔展示到控制台上,可以进行自定义
  • end:结束符,默认为\n,如果阻止换行,可以自定义
  • file:文件,默认为sys.stdout,sys.stdout表示标准输出,当进行print的时候,
    结果默认输出到控制台,可以自定义
  • flush:刷新,不断刷新缓冲区,目的为了提高数据读写的效率
# 1.values
# a.省略values,则print()表示换行
print("start")
print()
print("over")

# b.1个
print("ahjga")
print(129)
s1 = "结果是:%s" % ("good")
print(s1)
"""
ahjga
129
结果是:good
"""
# c.多个,输出的结果默认使用空格分隔
print("abc","xyz",10,30)
print("结果是:%s" % ("good"),"结果是:%s" % ("good"))
"""
abc xyz 10 30
结果是:good 结果是:good

"""

# 2.sep,注意:只针对同一个print
print("abc","xyz",10,30)
print("abc","xyz",10,30,sep=" ")
print("abc","xyz",10,30,sep="%%%%")
"""
abc xyz 10 30
abc xyz 10 30
abc%%%%xyz%%%%10%%%%30

"""
# 3.end,注意:针对的是多个print
print("abc","xyz",10,30)
print("abc","xyz",10,30,end="\n")
print("abc","xyz",10,30,end="*")
print("helgajhg",end="")
"""
abc xyz 10 30
abc xyz 10 30
abc xyz 10 30*helgajhg

"""
# 4.file    
# 重定向:将原本默认输出的位置做出修改
print("hello~~1111")
print("hello~~~222",file=sys.stdout)

"""
数据从磁盘---》内存   读取
数据从内存----》磁盘   写入

读写文件的步骤
 a.打开文件
 b.读/写内容
 c.关闭文件
 
注意:读取文件,则文件必须存在,
      写入,文件可以不存在,在写入的过程中可以自动创建
"""
f = open("file1.txt","w",encoding="gbk")
print("hello~~~3333发货结构化宽高和",file=f,flush=True)  # flush=True表示开启刷新
f.close()
  • input的工作原理:当程序在运行的过程中,遇到了input功能,则程序会阻塞,等待用户的输入,当用户输入指定的内容,然后按下enter键,则解除阻塞,代码会继续向下执行

    • input(x),x可以省略,x也可以是任意类型的数据,但是,为了用户的体验度,尽量给出用于提示的字符串
    • 从控制台输入的数据,获取到代码中,可以用变量接出来
    • 注意:不管从控制台输入什么数据,在程序中获取到的都是一个字符串
# 【problem】假设人的最长寿命为120岁,从控制台输入自己的年龄,并计算剩余寿命
max_age = 120
age = input("请输入你的年龄:")

# 校验年龄,范围为0~120
# 校验是否是数字,age.isdigit()判断age是否是由全数字组成的,如果是则结果为True
if age.isdigit():
    age = int(age)   # 先将age转化为整型,然后给age重新赋值
    # 校验范围,因为range()取值是左闭右开的区间,因此为了防止忘记直接在需要的测试值上加一
    if age in range(0,120+1):   #方式一:0 <= age <= 120       方式二:age >= 0 and age <= 120
        print("剩余寿命为:%d" % (max_age - age))
    else:
        print("活不到这么大的年纪哈")
else:
    print("输入有误")

3.进制转换

# 一、二进制,八进制,十进制和十六进制在Python中都可以表示

# 1.二进制
# 表示方式:用0b开头,b:bin
n1 = 0b1010
print(n1)

# 2.八进制
# 表示方式:用0o开头,o:oct
n2 = 0o226
print(n2)

# 3.十进制
n3 = 10
print(n3)

# 4.十六进制
# 表示方式:用0x,x:hex
n4 = 0x96
print(n4)

######################
# 1.bin/oct/hex(x),将x转换为二进制/八进制/十六进制
m = 10

print(bin(m))
print(oct(m))
print(hex(m))
"""
0b1010
0o12
0xa
"""
# 2.int(x,base),base表示进制,默认为10,也可以自定义为2,8,16,可以实现二/八/十六进制转换成十进制
print(int("110"))
print(int("110",base=10))
print(int("110",10))

print(int("110",base=2))
print(int("110",base=8))
print(int("110",base=16))
"""
110
110
110
6
72
272
"""
# 【problem】
print(int("0b1102",base=16))
# 11*16^4+1*16^3 + 1*16^2 +0 *16^1 +2*16^0 =725250
print(11*16**4+16**3+16**2+2)
"""
725250
725250

"""

4.运算符

  • 算数运算符
"""
+   -  *  / //   %   **
加 减 乘 除 取整 取余 幂(指)函数
优先级关系: **   >    *    /   %   //   > +  -

int:整数
float:浮点数

注意:在算术运算符的+ - *中,当整数和浮点数进行运算时,都会进行类型的提升,得到的结果是浮点数

工作原理:
    0.3 + 7----》0.3 + 7.0---》7.3
    5 * 0.4----》5.0 * 0.4 = 2.0   

"""
# 1./
# 注意:在算术运算符的/中,计算的结果为浮点数
print(x / y)
print(10 / 2)
"""
1.6666666666666667
5.0

"""
# 2.%:求余
print(x % y)
print(10 % 2)
"""
2
0
"""
# 3.//:取整
print(x // y)
print(10 // 2)
"""
1
5
"""
# 注意:在算术运算符的%  //中,计算的结果为整数
  • 赋值运算符
"""
=
简单赋值运算符

+=、-=、*=、/=、%=、//=、**=等
复合赋值运算符
"""
# 简单赋值运算符:=
# 复合赋值运算符:简单赋值运算符和算术运算符的结合

# 1.=
# 作用:给变量赋值,工作原理:先运算=的右边,然后给左边的变量进行赋值
x = 10
y = 50

# x = (y = x + 1)
x = (y == x + 1)
print(x)

# 2.复合赋值
# 作用:先进行算术运算,然后将运算的结果赋值给变量
m = 6
print(m)
m += 4    # 工作原理:m = m + 4
print(m)

n = 3
n **= 2
print(n)

"""
应用:如果需要对变量自身进行算术运算,
并且需要给当前变量重新赋值,则可以使用复合赋值运算符
"""
  • 关系运算符
"""
==     !=    >     <    >=       <=
相等 不相等 大于 小于 大于等于 小于等于
# 应用场景:比较运算符一般用于条件判断,结合if语句或者while循环使用较多

# 注意:算术运算符和比较运算符运算完之后都会得到一个运算结果,可以给变量赋值,
# 但是赋值运算符运算完没有结果,不能用于给变量赋值

# 注意区分=(赋值)和==(比较) 
"""
a = 1
b = 100

print(a == b)
print(a != b)

print(a > b)

print(a >= b)

  • 位运算符
""""
&   |  ^     ~  <<    >>
与 或 异或 取反 左移 右移

"""
# 与
print(6 & 2)
print(6 & 3)
print(8 & 3)

# 或
print(6 | 2)
print(8 | 3)

# 异或
print(6 ^ 3 ^ 3)
# 需求:交换数,数字电路的异或逻辑运算
a = 10
b = 20
a = a ^ b   # a = 10 ^ 20
b = a ^ b   # b = 10 ^ 20 ^ 20
a = a ^ b   # a = 10 ^ 20  ^ 10
print(a,b)

# 取反
print(~6)
print(~-6)

# 左移和右移
print(6 << 2)
print(8 << 3)

print(8 >> 3)
print(-6 >> 3)

"""
'''
and:都为真,取后值
    都为假,取前值
    一真一假取假值
or:都为真,取前值
    都为假,取后值
    一真一假取真值
执行的顺序:
         ()>not > and >or
'''
"""

5.if语句

"""
a.假:False  0  0.0  ""  []  {}  None
b.条件可以由常量,变量或者表达式充当
if 表达式:
	语句
当程序执行到if语句时,首先判断“表达式”的值,如果表达式的值为“真”,则执行缩进的语句;如果表达式的值为“假”,则跳过整个if语句继续向下执行
"""
# a.常量
if 1:
    print("1111")

# b.变量
a = True
if a:
    print("2222")

# c.表达式
if 3 < 5:
    print("33333")

"""

if 表达式:
	语句1
else:
	语句2
当程序执行到if-else语句时,首先判断“表达式”的值,如果表达式的值为“真”,则执行语句1;如果表达式的值为“假”,则执行语句2
"""
#从控制台输入一个数,判断该数是否是偶数
num = int(input("请输入一个数:"))
if num % 2 == 0:
    print("%d是一个偶数" % (num))
else:
    print("%d是一个奇数" % (num))

"""
if 表达式1:
	语句1
elif 表达式2:
	语句2
elif 表达式3:
	语句3
….
elif 表达式n:
	语句n
else:
	语句m
   
当程序执行到if-elif语句时,首先计算表达式1的值,如果表达式1的值为真,那么执行语句1,执行完语句1则直接跳出整个if-elif语句,代码继续向下执行;

 a.在多分支中,不管有多少个条件成立,最终都只会执行一个,按照顺序执行【谁在前面先执行谁】
    b.当所有的条件都不成立时,则会执行else分支
    c.else分支根据需求可以选择性的省略
"""
#用户从控制台输入自己的年龄,根据输入的年龄分阶段
age = int(input("请输入年龄:"))

if age < 0:
    print("输入有误")
elif age <= 3:
    print("婴儿")
elif age <= 12:
    print("儿童")
elif age <= 18:
    print("少年")
elif age <= 60:
    print("成年")
elif age <= 150:
    print("老年")
else:
    print("前无古人后无来者")
"""
if 表达式1:
	语句1
	if 表达式2:
		语句2
当表达式1和表达式2的值都为真时,才会执行语句2
# 理论上if语句嵌套的层数没有上限,但是,建议嵌套的层数最多三层,否则会降低代码的可读性和可维护性
"""

6随机数

"""
随机数的获取的流程
a.导入模块,import random
b.获取随机数
    方式一:random.choice(range(start,end,step))
            start:开始,可以省略,默认为0,如果显式定义则包含在内
            end:结尾,不能省略,不包含在内
            step:步长,可以省略,默认为1
            
    方式二:random.randint(start,end)
            start:包含在内
            end:包含在内
    
random.choice(range())和random.randint只能获取整数随机数
"""
# 演示随机数的用法
# 获取0~99之间的任意一个整数随机数
n1 = random.choice(range(0,100,1))
n1 = random.choice(range(0,100))
n1 = random.choice(range(100))

# 获取0~100之间的偶数随机数
# 注意:如果未省略step,则start也不能省略
# n2 = random.choice(range(100,2)) #IndexError: Cannot choose from an empty空的 sequence序列【容器】
n2 = random.choice(range(0,101,2))

# 获取0~100之间的奇数随机数
n3 = random.choice(range(1,100,2))

# 获取20~50之间的整数随机数
n4 = random.choice(range(20,50+1))

# 注意:step不能为float
# n4 = random.choice(range(20,51,0.5))  #TypeError: 'float' object cannot be interpreted as an integer

# 注意:randint只有start和end,都不能省略,不能自定义step,步长默认为1
# 需求:获取1~100之间的一个整数随机数
n5 = random.randint(1,100+1)
n51 = random.choice(range(1,100+1))

#模拟彩票中奖功能【随机产生一个数,和控制台输入的数进行比较,如果相等则表示中奖】
num1 = random.choice(range(100+1))
print(num1)
num2 = int(input("请输入一个数:"))
if num1 == num2:
    print("恭喜你,中奖了")
else:
    print("谢谢参与")
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值