


Python的安装
windows环境:
https://www.python.org/downloads/windows/
找一个你想要的版本,下载即可。比如下载3.99版本,直接下载安装文件
安装的时候把添加到环境变量勾上。Add Python to Path。这样就不用添加完成后在自己配置一次环境变量了。
安装完成后就可以使用python命令试试,是否安装成功了。
python的基础命令
查看python版本号
python --version
或者,使用-V,大写的V
python -V
进入python命令行
直接输入python即可
退出python命令行
exit()或者ctrl+z
Python基本语法
Python注释
注释:
# 定义一个变量
str = 'hello python'
'''
hello python多行注释
'''
"""
hello python多行注释
"""
print(str)
Python变量
Python的输入输出
input接受输入,print输出
username = input("请输入用户名:\n")
print("你输入的内容为:"+username)
输入输出做一个简单的加法计算:
number1 = input("请输入加数1:\n")
number2 = input("请输入加数2:\n")
result = int(number1)+int(number2)
print("两数之和为:"+str(result))
注意:python中,print函数不能同时识别2种数据类型。直接print(“两数之和为:”+result)会报错,无法把字符串和int类型相加,不像c#那样会自动转换,所以需要手动转化一下。
根据不同运算符实现两数计算
import sys
number1 = input("请输入加数1:\n")
number2 = input("请输入加数2:\n")
calltype = input("请输入运算符:\n")
result = 0
if calltype=="+":
result = int(number1)+int(number2)
elif calltype=="-":
result = int(number1)-int(number2)
elif calltype=="*":
result = int(number1)*int(number2)
elif calltype=="/":
result = round(int(number1)/int(number2),2)
else:
print("不支持该运算符")
sys.exit()
print("两数运算的结果:"+str(result))
Python的基本数据类型
整形
字符串
列表
键值对
Pythonwhile循环
简单求和循环
i=1
r=0
while i<=100:
r=i+r
i=i+1
print(r)
Python猜数字
基础用法:
import random
result = random.randint(1,100)
while True:
number = int(input("请猜数字,范围1-100\n"))
if number > result:
print("数字比实际数字大")
elif number < result:
print("数字比实际数字小")
else:
print("猜对了:数字是"+str(result))
break
算上次数与时间差
import random
import datetime
result = random.randint(1,100)
count = 0
# 记录游戏开始的时候
starttime = datetime.datetime.now()
while True:
number1 = int(input("请猜数字,数字的范围是1到100\n"))
count= count+1
if number1 > result :
print("你猜大了")
elif number1 < result :
print("你猜小了")
else:
## 记录游戏结束的时间
start_end = datetime.datetime.now()
## 计算时间差
diff_time = (start_end-starttime).total_seconds()
print("你猜对了"+",你猜了"+(str)(count)+"次","用时:",diff_time,"秒")
break
python获取当前时间,Python获取时间差
import datetime
import time
## 获取当前时间
start_time = datetime.datetime.now()
print(start_time)
time.sleep(3)
## 暂停3秒后获取当前时间
end_time = datetime.datetime.now()
print(end_time)
## 求两个时间差
time_diff = (end_time-start_time).total_seconds()
print(time_diff)
Python日期模块
import calendar
## 获取一年的日期
reuslt = calendar.calendar(2022)
print(reuslt)
print("--------------------------------------")
## 获取某月的日期
r2 = calendar.month(2022,6)
print(r2)
## 计算某一天是星期几
r3 = calendar.weekday(2022,5,22)
print(r3)
python的模块引用语法
import 模块….
这样是把某个模块全部引入。比如下面示例的datetime模块中既包含datetime,也包含date。我们直接引入全部模块里边所有的模块都可以用。
import datetime
## 获取年月日 时分秒
now_time = datetime.datetime.now()
print(now_time)
## 获取年月日
today = datetime.date.today()
print(today)
from xx模块 import 模块里边的部分内容
这样是引入一个模块里边的部分内容,比如这里引入datetime模块的datetime,所以我们可以直接datetime.now()了,而不用datetime.datetime.now()了。
from datetime import datetime
## 获取年月日 时分秒
now_time = datetime.now()
print(now_time)
Python列表List
list基本使用
'''
list
'''
## 申明
list1 = ['a','m','c','g','b']
## 访问
print(list1[2])
print(list1[-2])
print(list1[0:2])
print(list1[2:])
## 修改
print("---------------------------")
list1[2]="mm"
print(list1[2])
## 添加
list1.append("xx")
print(list1[-1])
print(list1)
## 删除
del list1[2]
list1.remove("a")
print(list1)
## 判断某个元素是否包含在列表中
iscontent = 3 in [1,5,7]
print(iscontent)
## 拿到list的长度
listlength = len(list1)
print(listlength)
## 两个list之间相加
listsum = [1,5,7]+[2,4,8]
print(listsum)
## 使用循环遍历list
### while 遍历
i = 0
listsumlen = len(listsum)
while i < listsumlen :
print(listsum[i])
i=i+1
### for循环 遍历
for item in listsum :
print(item)
使用list切片(slice)获取python
list1 = ["苹果","西瓜","香蕉","桃子","荔枝","芒果","哈密瓜"]
## 直接使用的方法 开始,结束,
result = list1[slice(2,5,2)]
## 可以等价于下面的写法,简写
result2 = list1[2:5:2]
print(result2)
list 练习。寻找list里边内容的位置,找到两次后退出
大概的效果
或者叫在水果集合里边找水果,找到后返回水果的位置,找到两次后就退出。这个图看着更清晰点
可以把问题分步简化
1:更根据名字找到位置(一个循环判断一下就搞定)
fruilt_list = ["苹果","哈密瓜","桃子","荔枝","西瓜","葡萄","榴莲"]
content = input("请输入想要找到的水果\n")
i = 0
while i<len(fruilt_list):
## item是集合里边的值
item = fruilt_list[i]
## 找到了就直接输出位置
if item ==content:
print(content,i)
i=i+1
2:能找无数次(外面套一个死循环搞定)
注意缩进,还有用于输入的位置放到死循环里边
fruilt_list = ["苹果","哈密瓜","桃子","荔枝","西瓜","葡萄","榴莲"]
while True:
i = 0
content = input("请输入想要找到的水果\n")
while i<len(fruilt_list):
## item是集合里边的值
item = fruilt_list[i]
## 找到了就直接输出位置
if item ==content:
print(content,i)
i=i+1
3:只能找两次(限制一下次数,两次就退出)
fruilt_list = ["苹果","哈密瓜","桃子","荔枝","西瓜","葡萄","榴莲"]
## 定义一个变量用于记录找到了的次数
count =0
while True:
content = input("请输入想要找到的水果\n")
i = 0
while i<len(fruilt_list):
## item是集合里边的值
item = fruilt_list[i]
## 用户想要找的水果和集合里边一个一个比较,如果有一个相等,就说明找到了
if item ==content:
count = count+1
print(content,",位置在:",i,"找到了",count,"次")
i=i+1
## 用break退出循环,由于有两个循环,所以写到外面,不然只能退出第一个循环。写里边也可以使用exit退出
if count == 2:
break
或者这样也可以方法有很多种,这里用exit退出:
上面一步一步分析的,逻辑理解起来更清晰点
list1 = ["a",'c','d','e','q']
## 找出列表中的位置
i = 1
count = 0
while True:
number1 = (input("请猜---------------\n"))
i=1
# 遍历查询
while i<len(list1):
# print(list1[i],number1)
if list1[i]==number1:
count = count+1
print("找到了",count,"个,位置在",i)
## 找到两个就退出
if count==2:
print("已经找到两个了结束了")
exit()
i=i+1
配合方法定义后
fruit_list = ["苹果","哈密瓜","桃子","荔枝","西瓜","葡萄","榴莲"]
## 定义一个变量用于记录找到了的次数
count =0
## 定义方法找到变量就加1
def findfruit(fruit_list,fruitname,_count):
i = 0
while i<len(fruit_list):
## item是集合里边的值
item = fruit_list[i]
## 用户想要找的水果和集合里边一个一个比较,如果有一个相等,就说明找到了
if item ==fruitname:
_count = _count+1
print(fruitname,",位置在:",i,"找到了",_count,"次")
i=i+1
return _count
while True:
content = input("请输入想要找到的水果\n")
resultcount = findfruit(fruit_list,content,count)
count = resultcount
## 用break退出循环,由于有两个循环,所以写到外面,不然只能退出第一个循环。写里边也可以使用exit退出
if count == 2:
break
list 练习2。同一个水果找两次才退出
配合键值对使用就比较简单了
list1 = ["苹果","西瓜","香蕉","桃子","荔枝","芒果","哈密瓜"]
## 定义一个键值对存放找到水果的次数
count_keyvalue = {}
## 可以无限找,输入exit退出
count = 0
while True:
poi = 0
fruit = input("请输入你想要找到的水果\n")
if fruit == "exit":
break
while poi<len(list1):
item = list1[poi]
if item == fruit:
count = count+1
if item in count_keyvalue:
print(item,"已经找到了两次,应该结束")
exit()
else:
count_keyvalue[item] = 1
print("找到了,位置是:",poi,"找到了",count,"次")
poi = poi+1
分析:
比如前面找到了4次分别是:西瓜,荔枝,哈密瓜,桃子
就会形成一个这样的键值对:
xx = {“西瓜”:1,”荔枝”:1,”哈密瓜”:1,”桃子”:1}
key在这个键值对存在的情况只有第一次已经找到过一次才会成立,所以只要key存在于这个键值对那一定前面已经找到过一次,直接exit()结束程序即可。
Python元组
元组是有序且不可更改的集合
基本和list类似,里边的内容不能修改,不能删除这些。要定义一些需要不变元素的一组数据可以使用元组。理解记忆,一个元字,记忆成不变
xx = ("西瓜","香蕉","桃子")
print(xx)
## 获取值
print(xx[1])
## for遍历
for item in xx:
print(item)
xx[1] = "香蕉2"
print("--------------------------------------")
i = 0
while i< len(xx) :
print(xx[i])
i = i + 1
更改元组值
创建元组后,您将无法更改其值。元组是不可变的,或者也称为恒定的。
但是有一种解决方法。您可以将元组转换为列表,更改列表,然后将列表转换回元组。
实例
把元组转换为列表即可进行更改:
x = ("apple", "banana", "cherry")
y = list(x)
y[1] = "kiwi"
x = tuple(y)
print(x)
Python生成器表达式
和列表推导式很类似。仅仅是将列表推导式中的[]替换为(),但是两者差别挺大,生成器表达式可以说组合了迭代功能和列表解析功能。可以延加载需要调用next才能访问里边的内容。
列表推导式是直接返回一个列表,生成器表达式是一个跌倒对象,不会直接生成一个列表,而是真正需要用到这些数据的时候才返回。
b = (x*x for x in range(1,3))
## 直接输出生成器表达式
print(b)
## 可以使用next逐一来访问
print(next(b))
print(next(b))
## 使用for循环遍历,它会自动调用next方法
for item in b:
print(item)
## 求和
print(sum(b))
## 生成器表达式转换成list
print(list(b))
## 生成器表达式转换成元组
# print(tuple(b))
注意有些测试的时候要把有些注释掉,比如测试求和的时候要把
Python键值对
tinydict = {'name': 'runoob','likes': 123, 'url': 'www.runoob.com'}
print(tinydict["likes"])
## 如果key不存在就是添加
tinydict["likes"]="修改过后的123"
print(tinydict)
## 删除字典
del tinydict["Name"]
print(tinydict)
## 清空字典
tinydict.clear()
print(tinydict)
if 'url22' in tinydict:
print('在')
else:
print("不在")
## 定义方法查找键是否存在
def findkey(key):
## 判断键值对里边的Key是否存在
if key in key_value:
print(key,"存在于键值对")
else:
print(key,"不存在于键值对")
findkey("age")
rkeys = tinydict.keys()
print(rkeys)
## 遍历key
for item in rkeys:
print(item)
## 遍历value
for item in tinydict.values():
print(item)
## 遍历Key,Value 。方法1:遍历key,在通过key取值即可
for keys in tinydict.keys():
print(keys,tinydict[keys])
键值对练习-投票
tinydict = {'黄焖鸡': 1,'水煮鱼': 1, '惊叫鸡': 1,'烫火锅': 1}
def print_ticket():
for keys in tinydict.keys():
print(keys,tinydict[keys])
print_ticket()
while True:
print("请给你喜欢的食物投票,e退出投票:")
tiket = input()
if tiket=="e":
break
if tiket in tinydict:
tinydict[tiket] = tinydict[tiket] +1
print_ticket()
else:
print("没有该食物")
print("-------------------------------------------------------")
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)