Python编程学习-基础笔记01

2022/6/18 5:20:12

本文主要是介绍Python编程学习-基础笔记01,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

python编程课

一、python基础变量和运算

1.1 数据类型和类型转换

数据类型

#数字:
int整型,long 长整型,float浮点型,complex 复数,
#布尔:主要用于开发中的判断,True, False 是关键字,加粗的深蓝色
booleam 布尔 --> True, False
string字符串,list列表,tuple元组,dict字典
#数据类型转换

数据类型转换

print('hello world')
name = Forrest
print(name)
#input()阻塞型函数,在终端输入值后,程序才往下运行, 输入的值赋给变量
username = input('请输入用户名:')
print('哈哈')
print(username)
print(type(username))  #< class 'str'>
#键盘输入的值都是字符串类型 str
money = input('请输入金额:')
print(int(money)+1000)	#将money转化为整型,数字相加
print(money+str(1000))  #将数字转化为字符串,字符串拼接
'''
以变量名a
str --> int   	 int(a), 但如果是‘9.9’而且是字符串类型转int就报错了
srt --> float	 float(a)

int --> str		str(a)
float --> str   str(a)
int --> float	float(a)
float --> int 	int(a), 浮点型小数点后的数被抹掉了
boole --> int   True = 1, False = 0

int,str --> bool : 变量值为:0,''空字符串,转换结果为False,其余为True

'''

引号的使用

单引号:
双引号:
三引号: 保留格式输出,多行注释

1.2 运算符

'''
运算符:
=	赋值运算符
+ - * / % // ** 算术运算符
// 整除
** m**n,表示m的n次幂
%  余数,取模,算奇数偶数或倍数时使用
'''
a = 2
b = 3
c = a + b #先计算 a +b, 然后赋值给c
#输入一个3位整数,然后打印个位,十位和百位
number = int(input("请输入一个3位整数:"))

print("个位数:",number%10)
print("十位数:",number//10%10)
print("百位数:",number//100)
'''
赋值运算:
= , +=, -=, *=,/=, //= , **=, %=
'''
a = 5
b = 3
c = 0
a +=1 # a = a+1
print(a,b,c)
-->6 3 0
b +=a
print(a,b,c)
--> 6 9 0
'''
关系运算符:结果只能位 True, False
>, <, >=, <=, ==, !=, is
'''
a = 6
b = 8
print(a>b)
--> False
#字符串的比较,按照ascii码表数值进行
x = 'abc'
y = 'abf'
print(x == y)  #False
print(x<y)  #True

1.3 逻辑运算

'''
运算符: and, or, not
结果: 
'''
a = 1
b = 3
print(a and b) #and两边都是非零数字,结果取and之后的值
--> 3
c = 0
print(c and b)#and两边只要有一个为0,结果都为0
--> 0
print(a>c and a < b)
--> True
print(a or c) #第一个为真,输出第一个值
-->1
print(c or b) #第一个为加,继续向后判断
-->3

1.4 格式化输出

#字符串只能与字符串拼接
#字符串进行格式转换
'''
常用符号:
%s 字符串str
%d 整数 digit
%f 浮点型 float

'''
name = 'Forrest'
age = 33
money = 9999.98

# 33岁的Forrest一天挣了9999.98元!!
print("%d岁的%s一天挣了%.2f元!!"%(age,name,money))
print("%d岁的%s一天挣了%f元!!"%(age,name,money))
print(f"{age}岁的{name}一天挣了{money}元!!")
#output
33岁的Forrest一天挣了9999.98元!!
33岁的Forrest一天挣了9999.980000元!!
33岁的Forrest一天挣了9999.98元!!

1.5 进制转换

'''
二进制:0-1
八进制:0-7
十进制:0-9
十六进制:0-9 a-f
前缀: ob 二进制,0o 八进制,0x十六进制,默认十进制
'''
#十进制转二进制,除2取余数,倒着取数
n = 149
result = bin(n)
print(result)
--》0b10010101
#十进制转八进制,除8取余数,倒着取数
result = oct(n)
print(result)
--> 0o225
#十进制转十六进制,除8取余数,倒着取数
result = hex(n)
print(result)
--》0x95
'''
十六进制数
n = 0x558
1,如何转成十进制输出
2,如何转成二进制和八进制
已知二进制转十六进制,将二进制从右往左,4位一组分,最后不够4位的补0
已知二进制转八进制,将二进制从右往左,3位一组分,最后不够3位的补0
'''
m = 0X558
#转十进制
result = int(m)
print(result)
#转二进制
result = bin(m)
print(result)
#转八进制
result = oct(m)
print(result)

1.6 位运算

'''
位运算,针对二进制进行
& | ^ ~ << >>
& 类似于and
| 类似于or
^ 按位异或运算,当对应的二进制位相异,结果为1
~ 按位取反运算,对数据的每个二进制位取反,把1变0,0变1,~x,类似于-x-1
<< 左移运算符,运算<<的二进制位全部左移若干位,由<<右边的数字指定了移动位数,高位丢弃,低位补0, a<<2
>> 右移运算符,运算>>的二进制位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移),a>>2
'''
'''
二进制负数表示:
原码 0110
反码 1001
补码 反码+1 = 1010
1, 已知十进制负数 -7, 求二进制负数
	1,正数的原码 ;2,原码取反;3,加1 --》得到的二进制就是二进制负数
	-7的进制:
		1,先求+7的二进制:0000 0111 原码
		2,反码 1111 1000
		3,加1  1111 1001
		-7的二进制: 1111 1001
		
2,已知二进制的负数,判断是否是负的二进制的依据,看二进制的最高位:1111 1001,最高位是1则为负数,最高位是0则为正数,求对应十进制
	1,二进制 (负的);2,二进制减1 ;3,取反; 4,原码 5,将原码转为十进制,在十进制前面添加负号:-
		1111 1010 补码
		-       1
		-----------------
		1111 1001 --》反码 0000 0110
		原码 0000 0110 --》6
		-6	
3,~5 --》 就是将5 的二进制取反

'''
#移位,一个int整数是32位
n = 12
#左移,数据换算位二进制,类似放到一个隧道中,假如隧道中要保持8位,数据往左移动,最右边空出来的补0
print(n<<1) #24 12*2
print(n<<2) #48 12*2*2
print(n<<3) #96 12*2*2*2
#右移,数据换算位二进制,类似放到一个隧道中,假如隧道中要保持8位,数据往右移动,最左边空出来的补0
print(n>>1) #6 12//2  -->12//2
print(n>>2) #3 12//2//2 --> 12//4
print(n>>3) #1 12//2//2//2 --> 12//8

总结

    1,算术运算符
    2,赋值运算符 = += -=
    3,比较运算符 > < == !=
    4,逻辑运算符 and or not
    5,位运算
    6,运算符的优先级,类似于数学运算,这里比较运算优先级低

二、条件判断

2.1 if条件语句

'''
if  
if ... else ....
if ...elif ... else ...
'''
格式1:
if 条件:
	条件成立执行

格式2:
if 条件1:
	条件1True,执行语句
elif 条件2:
	条件2True,执行语句
elif 条件3:
	条件3True,执行语句
else:
    1,2,3 条件都不满足,执行语句
    
'''
if 嵌套结构:可以在每个if条件下都嵌套
if 条件1:
	#条件1满足,执行下面的if嵌套语句
	if 条件1.1:
		条件1.1 True,执行语句
	else:
		条件1.1 False,执行语句
elif 条件2:
	条件2 True,执行语句
elif 条件3:
	条件3True,执行语句
else:
    1,2,3 条件都不满足,执行语句

'''
n =10
m =5
if m >3:
    print('111111111111')
    if n < 10:
        print("9<10")
     else:
        print('Not 9<10')
     print('2222222222222222')
else:
    print('333333333333')

2.2 自动类型转换

if语句需要一个判断条件,这个判断条件的结果需要一个布尔值。如果此时输入的条件结果不是一个布尔值,在代码执行的过程中,会将这个值自动转换为一个布尔值。

if 1<2: #if语句判断条件需要一个布尔值
    print('1小于2')
    
 if 'hello': #if 判断条件后没有传入布尔值,会自动把它转为布尔值
    print('是否打印这段代码')
    

提示:python 中转换成为布尔值时,只有0, ' '," ",None,(),[],{} 会被转换为False,其余都会转换为True。

三、循环语句

场景:

1,用户名和密码,反复输入

2,计算1-100之间的数字

3,游戏中从重生

4,............

方式:

1,while

2,for

3.1 while循环

'''
while 条件:
	要循环执行的代码
#布尔类型的条件
'''
#打印1-10之间的数字
#初始值
n =1
#结束条件
while n <= 10:
    print('-------n=%d'% n)
    #变量一定要变化
    n += 1
#打印1-50之间能被3整除的数
n = 1
while n < 50:
    n += 1
    if n % 3 == 0:
        print(n)
# break跳出当前循环
count = 0
while True:
    print('*>'*20)
    count += 1
    if count ==5:
        break #跳出当前的循环结构     

3.1.1购买商品计价器

'''
购买商品:
1,手动输入价格和数量
2,累计商品总价
3,累计买了多少件商品
'''
total = 0
count = 0
while True:
    #先购买商品
    price = float(input('请输入价格:'))
    number = int(input('请输入购买数量:'))
    #累加计算总价
    total += price*number
    #累加商品件数
    count += number
    #判断是否继续购买
    answer = input('当前商品总价:%.2f,是否继续添加商品,按e不再购买'% total)
    if answer == 'e':
        #跳出while循环
        break
print('所有商品总价为:%.2f'% total)
print('一共购买了%d件商品'% count)

3.1.2猜数字小游戏

'''
猜数字小游戏:猜1-100 之间的整数
1,可以猜多次,直到猜对为止,如果猜错了,给出提示
2,统计猜了几次
3,如果1次就猜中,提示:猜对了,运气爆棚,赶快买彩票
    如果2-5次猜对,提示:猜对了,运气还可以
    6次以上,提示:猜对了,运气一般啊
'''
import random

#生成一个随机的整数
ran = random.randint(1,100)
#将次数置为零
count = 0

#循环猜数字
while True:
    #输入猜想值,并转换为整型
    guess = int(input("请输入你猜的数字1-100:"))
    #累加猜测次数
    count += 1

    if guess == ran :
        if count ==1:
            print('猜对了,运气爆棚,赶快买彩票!!')
        if 2<= count <=5 :
            print("猜对了,运气还可以!!")
        if count >=6:
            print("对了,运气一般啊")
        #跳出循环
        break

    elif guess < ran:
        print("你猜小了,请再大一点")

    else:
        print("你猜大了,请再小一点")

print(f"你共猜了{count}次")

3.2 for 循环

'''
格式:
for 变量名 in range(n):
	循环体中的内容
	
range(n), 默认从0开始取值,到n-1结束,默认step是1
range(start,end,[step]), 从start开始,到stop-1结束,step步长,[start,stop)
'''
#求1~50 的累加和
sum = 0
for i in range(1,51):
    sum += i
print(sum)

3.2.1 用户验证

输入用户名密码,三次不成功即提示账号被锁定

#输入用户名密码,三次不成功即提示账号被锁定
username = 'Forrest'
password = '123456'
count = 0
for i in range(4):
    count += 1
    i += 1
    if count <= 3:
        input_user = input('请输入用户名:')
        input_passd = input('请输入密码:')
        if input_user == username and input_passd == password:
            print('登录成功')
            break
        else:
            print('用户名或密码不正确,%d次错误'% i)
            continue
    else:
        print("你已经输出3次账号密码,账号被锁定,请一小时之后重试")

3.2.2 用户验证 -->改进版本

输入用户名密码,三次不成功即提示账号被锁定,改进版本, python 特有的for ... else,while...else 结构。

else 的特点: 不被中断才会执行

#输入用户名密码,三次不成功即提示账号被锁定,改进版本
'''
for i in range(n):
	循环体
else:
	如果上面的for循环从0~n-1一直没有被打断,即没有执行break,则执行该语句
'''
username = 'Forrest'
password = '123456'
for i in range(3):

    input_user = input('请输入用户名:')
    input_passd = input('请输入密码:')
    if input_user == username and input_passd == password:
        print('登录成功')
        break
    else:
        print(f'用户名或密码不正确,{i+1}次错误')
#for循环没有被打断,则执行下面的else语句
else:
    print("你已经输出3次账号密码,账号被锁定,请一小时之后重试")

3.3 for 与while 的对比

'''
for in range(n): ---> 可定是有固定次数的
	pass
	
while 条件: --->1,既可以实现固定次数的循环;2,不确定次数的循环也可以
	pass

#不确定次数
while True:
	pass
'''

3.3.1掷骰子游戏

'''
要求:2颗骰子
1,玩游戏需要金币,没有金币不能玩
2,金币获取方式:
	1,玩一次赠送金币1枚
	2,充值获取金币,只能充10元,或10元的倍数
3,充10元得20枚金币
4,玩游戏消耗金币,一局消耗5枚金币
5,猜大小:超出6点以上,大, 否则,小
	1,猜对一次,鼓励金币2枚
	2,猜错没有奖励
6,游戏结束:
	1,主动退出
	2,没金币退出
7,只要退出就打印金币数,共玩了几局
'''
Draft版本
import random
#初始化金币
coins = 0
#初始化计数器
count = 0

if coins < 5 :
    # 提示金币不够,充值
    print('金币不足,请充值再玩!')
    choice = input('请选择是否充值Y/N:')
    if choice == 'Y':
        while True:
            #开始充值
            money = int(input("请输入充值金额:"))
            if money%10 == 0 and money > 0:
                coins += money//10 * 20
                print(f'充值成功,你现在的金币数{coins}')
                #充值之后可以开始玩游戏了
                print('~~~~~~~~开始进入游戏,Loading>>>>>>>>>~~~~~~~~~')
                #确认是否开始
                answer = input('请确认是否开始游戏y/n:')
                while coins >= 5 and answer == 'y':
                    #选择开始或退出按钮,一旦开始就扣除金币,退出不扣
                    #扣除5枚金币
                    coins -=5
                    #奖励1枚金币
                    coins += 1
                    #生成随机数,2颗骰子,每个都是随机的1~6点
                    ran1 = random.randint(1,6)
                    ran2 = random.randint(1,6)
                    print('洗骰子完毕,请猜大小')
                    #猜大小,两颗骰子点数相加大于6为大,小于等于6为小
                    guess = input('请输入你的猜测大还是小:')
                    if (ran1 + ran1 > 6 and guess == '大') or (ran1 + ran1 <=  6 and guess == '小'):
                        print('恭喜你猜对了,你赢得2个金币')
                        coins += 2
                    else:
                        print('很遗憾,你输了!!')
                    count += 1
                    print(f'当前还剩下{coins}个金币')
                    answer = input('是否继续游戏y/n:')

                print(f'退出游戏,欢迎下次光临,你一共玩了{count}次,还剩下{coins}个金币!')
                break
            #输入的金额不是10的整数,请重新输入
            else:
                print('输入的金额不是10的整数,请重新输入')
    else:
        print('再见,欢迎下次光临!')
改进版本
import random

#初始化金币
coins = 0
#初始化计数器
count = 0

if coins < 5 :
    # 提示金币不够,充值
    print('金币不足,请充值再玩!')
    choice = input('请选择是否充值Y/N:')
    if choice == 'Y':
        while True:
            #开始充值
            money = int(input("请输入充值金额:"))
            if money%10 == 0 and money > 0:
                coins += money//10 * 20
                print(f'充值成功,你现在的金币数{coins}')
                #充值之后可以开始玩游戏了
                print('~~~~~~~~开始进入游戏,Loading>>>>>>>>>~~~~~~~~~')
                #确认是否开始
                answer = input('请确认是否开始游戏y/n:')

                while coins >= 5 and answer == 'Y':
                    #选择开始或退出按钮,一旦开始就扣除金币,退出不扣
                    #扣除5枚金币
                    coins -=5
                    #奖励1枚金币
                    coins += 1
                    #生成随机数,2颗骰子,每个都是随机的1~6点
                    ran1 = random.randint(1,6)
                    ran2 = random.randint(1,6)
                    print('洗骰子完毕,请猜大小')
                    #统计玩了几次游戏
                    count += 1
                    #猜大小,两颗骰子点数相加大于6为大,小于等于6为小
                    guess = input('请输入你的猜测大还是小:')
                    if (ran1 + ran1 > 6 and guess == '大') or (ran1 + ran1 <=  6 and guess == '小'):
                        print('恭喜你猜对了,你赢得2个金币')
                        coins += 2
                    elif coins < 5 :
                        print('当前金币不足5个,请充值')
                        break
                    else:
                        print('很遗憾,你输了!!')

                    print(f'当前还剩下{coins}个金币')

                    answer = input('是否继续游戏Y/N:')

                print(f'退出游戏,欢迎下次光临,你一共玩了{count}次,还剩下{coins}个金币!')
                break
            #输入的金额不是10的整数,请重新输入
            else:
                print('输入的金额不是10的整数,请重新输入')
    else:
        print('再见,欢迎下次光临!')

3.3.2跳出循环

break和continue都会出现循环中,不同的是遇到break会跳出整个循环结构,而遇到continue是跳出本次循环,继续下一次的循环

#打印10以内不能被3整除的数
for i in range(1,10):
    if i%3==0:
        #跳过本次循环
        continue
    print(i)
#结果
1
2
4
5
7
8 
#打印10以内不能被3整除的数
for i in range(1,10):
    if i%3==0:
        #跳过整个循环
        break
    print(i)
#结果
1
2

3.4循环打印图案

3.4.1while 循环来实现

'''
while 循环来实现
'''
n = 1
#n控制行数
while n <=5:
    #m 控制* 的数量
    m = 0
    while m < n:
        #print默认最后换行,加end 去掉换行
        print('*',end='')
        m += 1
    n+=1
    #打印一行之后换行
    print()

n = 1
while n <=5:
    #m 控制* 的数量
    m = 5
    while m > n:
        #print默认最后换行,加end 去掉换行
        print('*',end='')
        m -= 1
    n+=1
    #打印一行之后换行
    print()
    
效果:
*
**
***
****
*****
****
***
**
*

3.4.2 for循环实现相同的功能

#定义变量i在1~6之间,即控制行数为5行,不含后边界
for i in range(1,6):
    j = 0
    for j in range(i):
        print('*',end='')
        j+=1
    i += 1
    print()

for i in range(1,6):
    #总行数为5,这里变量值控制在5
    j = 5
    #引入新的变量来控制打印次数
    for k in range(j-i):
        print('*',end='')
        j-=1
    i += 1
    print()
效果:
*
**
***
****
*****
****
***
**
*


这篇关于Python编程学习-基础笔记01的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程