ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python编程学习-基础笔记01

2022-06-17 22:38:22  阅读:181  来源: 互联网

标签:01 二进制 Python 编程 金币 -- int print input


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()
效果:
*
**
***
****
*****
****
***
**
*

标签:01,二进制,Python,编程,金币,--,int,print,input
来源: https://www.cnblogs.com/orange2016/p/16387169.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有