python基础入门小结(1)

本文介绍了Python的基础知识,包括变量命名规范、数据类型及其转换、运算符、进制转换、条件语句、循环结构、字符串操作以及常用内置函数。此外,还探讨了逻辑运算、位运算以及文件上传的模拟实现,涉及金币游戏和掷骰子猜大小的示例。内容覆盖了Python编程的基础概念和技术,适合初学者入门学习。
摘要由CSDN通过智能技术生成

一、Python基础

1.Python如何命名:

变量:就是一个容器
弱语言:变量声明的时候对数据类型不是很严格
格式:变量名=值
怎么起名?赋什么值?有什么数据类型?
变量名的命名规范

  1. 只能是字母,数字,下划线,且不能以数字开头,其他特殊符号不可以
  2. 不能使用关键字,严格区分大小写
  3. 以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。以双下划线开头的 __foo 代表类的私有成员,以双下划线开头和结尾的 foo 代表 Python 里特殊方法专用的标识,如 init

命名见名知义:
getNameByLine:驼峰式:开头一个字母小写,后面大写 小驼峰
Python建议使用下划线:get_name_by_line=6
类名一般使用大驼峰:每个字符首字母大写,FirstName

2.数据类型以及数据类型转换:

在这里插入图片描述

变量类型:
1.数字(numbers):int float double short long complex
2.布尔类型:true false,开发中用来进行判断isLogin=True
3.字符串:string
4.列表
5.元组
6.字典
7.集合

输入:
input()和print()是对应的;
userName=input(“请输入你的用户名:”)阻塞型函数
print(userName)
类型转换:
money=input(“请输入你的缴费金额:”)
print(money+1000) 会出现警告
可以进行类型转换:
print((int)money+1000)
print(money+str(1000))将数字转为字符串

python不支持强制转换
str-->int  int(a) 但是如果'9.9',而且是字符串转换为int类型,会出现错误
str-->float float(a)
int -->float  float(a)
float-->int  int(a)  只不过会把小数点后面的小数抹掉
flag=True
bool类型转为整型,
print(int(flag))  布尔转为整型,true为1,false为0;
float(flag)  也可以,带一位小数;
非零数值、非空字符串、非空list、dict、tuple等,就判断为True,
否则为False ---重要!!!

问题:a=5,能否将a转为布尔?
a=5
print(bool(a)) 返回值为True
a=0
print(bool(a)) 返回False
变量的值为0,’’(空字符串),转换结果为false,其他转换为true;

格式化输出:
name=‘邢小艾’
age=18
print(“我喜欢听”+str(age)+“岁的”+name+“唱歌!”)
格式化输出:
符号:%s 字符串string %d 整数digit
%f 浮点数 %c 字符格式

print'我喜欢听%d岁的%s唱歌!'%(age,name))
money=999.98
#18岁的邢小艾一首歌赚了money块钱
print('%d岁的%s一首歌赚了%f块钱'%(age,name,money))
print('%s岁的%s一首歌赚了%.2f块钱'%(age,name,money))

在这里插入图片描述

3.运算符:

赋值运算符:=,± 、*/
算术运算符:+,-,*,/,%,//,
**
如:a=3 b=3
print(a/b) 除法
print(a//b) 整除
print(a**b) 整数次幂 2的3次方
print(a%b) 取余,取模,计算奇偶数的时候,计算倍数的时候使用模

键盘输入一个3位数的整数,打印个位数,百位数,十位数的数字是多少
123字符串
123%10=3
123//10=12 //才是进行整除
12%10=2
12//10=1
1%10=1

赋值运算符:
+=,*=,/=,//=,**=,%=
a=8
b=4
c=a+1

关系运算符:结果只有两种:true和false

=,<=,>,< ,!=,is(判断地址是否相等)
a=‘abc’
b=‘sdf’
print(a
b)
print(a<b)比较的时候根据字符的ASCII码进行判断

逻辑运算符:
and or not与或非
a=1
b=3
print(a and b)
not True 就是false

is :内存地址判断
Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。
is和==都是对对象进行比较判断作用的,但判断的内容不相同。
is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同
id( ):对象占用的内存空间的起始地址
==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等

字体颜色快捷键的设置:font

4.进制:

二进制:0,1
八进制:0,1,2,3,4,5,6,7
十进制:0~9
十六进制:0~ 9,a~ f

149转二进制:
n=149
result=bin(n)#转为二进制
print(result)

十进制转八进制:除8取余
八进制转十进制:每个位上数字*8的几次方
bin()二进制0b
oct()八进制0o
hex()十六进制0x
默认是十进制

思考
bin(n),无论当前的参数是多少位,都可以直接转换为二进制;
int()
oct()
hex()十六进制转为二进制,直接把每个数字直接转为二进制;十六进制转8进制,先转为二级制,再进行3个划分,得到的就是八进制的数字;
二进制转16位,4位进行划分,高位不足补0;
二进制转8进制,3位进行划分,高位不足的时候补0

位运算:& | ^ << >>
& 类似and
n1=0b0110
n2=0b0010
print(n1&n2) 返回的就是2–0b0010
~取反:
n1=12
print(~n1)
按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x类似于 -x-1
二进制的负数是如何表示的?
通常是使用补码进行表示;
原码
反码
补码=反码+1

例如:print(~5)
先计算5的原码:0000 0101
反码:1111 1010(负数)
补码:1111 1001(减一)
在进行取反:0000 0110 得到的就是6,但是是负数,所以是-6

例如:print(~-5)
首先计算-5的原码:0000 0101
反码:1111 1010
补码:1111 1011
取反:0000 0100 得到的结果就是4

-7的二进制:
左移:<<相当于*2的几次方
右移:>>相当于除以2的几次方
n=89 右移5位,

6.条件语句:

if…
if…else…
if…else if…else…
if a>5:
条件成立,要执行的语句;
else:
条件成立;
result=input(‘请输入(y/n):’)
if result==‘y’:
print(4)
print("----")

pass:本身没有意义,只是支撑这个结构,后面可以自己来填内容

条件嵌套:
三元运算符:
a=1
b=2
c=a if a<b else b
print(a,b,c)

循环:应用场景:
1.用户名和密码,反复输入
2.计算1-100
3.王者,死了重生
方式:while for
打印1-50之间能被3整除的数字

for i in range(1,50):
	if i%3==0:
		print(i)
while n<=50:
	if n%3==0:
		print(n)
	n-=1;

for循环:
格式:for i in range(n):
for i in range(10):
print(i)
打印的内容为:0,1,2,3,4,5,6,7,8,9
默认从0开始,只包括前面的值,不包括后面的值;
指定初始值的话,就从初始值开始打印。

指定步长:for i in(1,10,2)指定步长为2

求1-50的累加和

sum=0
for i in range(1,51):
    sum+=i
print(sum)

最多只有三次机会输入用户名和密码,如果三次没有输入成功,则退出,如果一次输入成功,则退出循环;

for i in range(3):
    username=input('用户名')
    password=input('密码')
    if username=='admin' and password=='1234':
        print(;用户登录成功')
        break
    else:
        print('用户输入有误')
print('--------------')
if i==2:
	print('账户被锁定')

for…else…
for i in range(3):
循环体
else:
如果上面的for 循环从0-n-执行的过程中没有出现中断,执行完都没有执行到所以现在才会继续执行这一块的代码
while…else…

n=1
while n<=10:
    print(n)
    if(n==5):
        break
    n+=1
else:
  print()

while…else…:
不被中断才会继续去执行;

使用场景:
for:含有固定次数
while:可以固定次数,也可以不确定次数的循环;

if…else…

投掷游戏:
两个筛子:1-6
1.玩骰子要有金币,
2.玩游戏赠一枚金币,充斥送金币
3.10元的倍数,20个金币;
4.玩游戏消耗金币,一局5个金币
5.掷骰子猜大小:猜对了,会有鼓励金币2枚赠送;猜错了没有奖励;
两个骰子的点数相加超过6以上,则判定为大,否则,判断为小;
6.游戏结束:1.主动退出;2.没有金币退出;
7.只要退出则打印金币的剩余个数和玩的局数

import random
count=0#计数器
coins = 0  # 金币数
if coins < 5:
    # 提示充值
    print('金币不足,请充值后再继续玩游戏')
    while True:
        money = int(input('请输入充值的金额:'))
        if money % 10 == 0:
            coins += money // 10 * 20
            print('充值成功,当前金币有%d个' % coins)
            # 开启游戏之旅
            print('----开始游戏之旅----')
            answer = input('是否开启游戏之旅(y/n):')
            while coins >= 5 and answer == 'y':
                count+=1
                coins -= 5
                # 赠送金币
                coins += 1
                # 产生两枚随机的数字
                ran1 = random.randint(1, 6)
                ran2 = random.randint(1, 6)
                guess = input('洗牌完毕,请猜大小:')
                # 判断大小
                if guess == '大' and ran1 + ran2 > 6 or guess == '小' and ran1 + ran2 <= 6:
                    print('恭喜你,猜对了')
                    coins += 2
                else:
                    print('很遗憾,本次猜错了')
                answer=input('是否继续游戏(y/n):')
            print('共完了%d局游戏,剩余金币%d个金币'%(count,coins))
            break
        else:
            print('不是10的倍数,充值失败')

跳出语句:continue和break
break:跳出当前整个循环语句
continue:跳过本次循环(后面的语句不执行),继续下一次循环
不打印能被3整除的

for i in range(10):
if i%3!=0:
    print(i,end='')#不换行
n=1
while n<=5:
    m=0
    while m<n:
        print('*,end='')
        m+=1
    n+=1

流程控制:
条件语句:if
字符串介绍:
单引号,双引号,转义字符,三个单引号,三个双引号

s1='hello'
s2=s1
s3='hello'
print(s1,s2,s3)
print(id(s1))#打印地址
print(id(s2))
print(id(s3))
print(s1 is s2)#判断地址是否相同

字符串保留区:和Java的字符串常量池类似,常量池中有的就不用再创建了。
切片操作:
s1=‘ABCDEFG’
print(s1[4]) #使用索引

print(s1[-3:]#从-3开始到结尾
print(s1[:])#相当于打印整个s1
#不要两边的数字
print(s1[1,-1])
还可以跟步长
s1[start,end,step]
print(s1[👎2])#包前不包后

#查找:find,index,rfind,rindex
find从左往右查找,只要遇到一个符合要求的就返回当前位置,如果没有找到任何符合要求的,则返回-1;
rfind:表示从右开始查找,

path='http://www.baidu.com/img/dong_eglish.gif'
i=path.find('_')
print(i)
image_name=path[i+1:]
print(image_name)
找到图片的后缀名
i=path.rfind('.')
zhui=path[i:]
print(zhui)

count:统计指定字符的个数
index与find的区别:index也是表示查找,找不到会报错;

判断:返回值都是布尔类型
startswith:是否是以XXX开头的
result=s.startswith(‘e7’)
endswith:是否以XXX结尾的

模拟文件上传,键盘输入上传文件的名称(abc.gif),判断文件名是否大于6位以上,扩展名是否是:jpg,gif,png格式
如果不是则提示上传失败,如果名字不满足条件,而扩展名满足条件则随机生成一个6位数字组成的扩展名,打印成功上传XXX.png

file=input(‘输入文件全称:’)
#判断扩展名是否正确
if file.endswith(‘jpg’) or file.endswith(‘gif’) or file.endswith(‘png’):
#判断文件的名字
i=file.rfind(’.’)
name=file[:i]
if len(name)<6:
#重新构建一个文件名
n=random.randint(100000,999999)
new_name=str(n)+file[i:]
print(‘成功上传%s文件’%file)
else:
print(‘文件格式错误,上传失败’)

类似登录的时候刷新出现的验证码,如:AF5s格式,出现数字和字母的组合形式。
filename = ''
s = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890'
for i in range(4):
    index = random.randint(0, len(s) - 1)
    filename += s[index]
print(filename)

替换,切割
替换内容:replace
s=‘啊泽:德善,你真好看!’
s=s.replace(‘你’,’**’)
print(s)

当有两个或者多个要替换的内容时,使用正则表达式或者列表

切割:
split()
s=‘崔泽 德善 狗焕’
s.split(’ ')
空格常见处理:
空格处理:ljust,rjust,centre,lstrip,rstrip,strip
字符串拼接:json

#数字字段名
#可以通过数字形式的简单字段名传递位置参数
数字必须是大于等于0的整数
带数字的替换字段可以重复使用
数字形式的简单字段名相当于把format中所有位置参数当作一个元组,通过字段名中的数字进行取值,即{0}等价于tuple[0],所以大括号内的整数不能越界。

result=‘美女{0}今年{1}岁了,我也{1}岁了’.format(name,age)
print(result)

也可以使用索引进行填充

变量字段名命名:format里面的参数必须使用关键字,关键字参数
result=‘美女{name}今年{age}岁了,我也{age}岁了’.format(name=’赵丽颖’,age=18)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小艾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值