首页 >> 大全

Python基本语法简单应用

2023-12-17 大全 24 作者:考证青年

项目源码链接

链接:

此链接已包含等项目。

剪刀石头布游戏 伪代码

死循环提示进入游戏,显示时间输入密码1.密码正确进入猜拳死循环1.按Q退出2.出错招3.判断输赢用户赢用户输平局2.密码错误重新输入

示例代码

import time
import re
import random
import sys# 定义出招列表czb_list
czb_list = ['石头', '剪刀', '布']# 定义密码判断函数
def judge_password():# 输入密码password = input('密码:')# 密码正确if re.match(r'^1[3458]\d{9}$', password):return True, '密码正确'# 密码错误else:return False, '密码错误'# 定义玩游戏函数
def play_game():# 用户与电脑出招user = input('请出招(Q退出):')computer = random.choice(czb_list)if user == 'Q':# 退出sys.exit('已退出')elif user in czb_list:# 用户赢if user == '石头' and computer == '剪刀' or user == '剪刀' and computer == '布' or user == '布' and computer == '石头':print(f'你赢了,电脑出的是{computer}')# 平局elif user == computer:print(f'平局,电脑出的是{computer}')# 用户输else:print(f'你输了,电脑出的是{computer}')else:# 出错招print('出错招了')if __name__ == '__main__':while True:# 提示进入游戏 显示时间local_time = time.strftime('%Y-%m-%d %H:%M:%S')print(f'欢迎来到猜拳游戏,当前时间:{local_time}')# 获取返回值flag, msg = judge_password()# 判断返回值,正确进入游戏 错误重新输入if flag:print(msg)while True:play_game()else:print(msg)

if len()==11 and .() and [0]=='1' and [1] in '3458':

if re.match(r'^1[3458]\d{9}$', ):

普通方式与正则匹配,这两种判断方式等价。

True, '密码正确'

flag, msg = ()

返回与获取返回值时,用逗号分隔就行。

使用模块与功能 time模块方法

time.time()

功能:获取时间戳

参数:无

返回值:时间戳(1970年1月1日午夜以来的秒数)

time.sleep()

功能:暂停程序指定秒数

参数:秒数

返回值:无

time.(, =None)

功能:时间戳转格式

参数:1:格式'%Y-%m-%d %H:%M:%S'2:时间戳(可以没有)

返回值:格式化后的时间

f-方法

name = ''

age = 20

print(f'My name is {name}, age is {age}.')

引号前加f或F,变量用{}括起来

print('My name is {}, age is {}.'.(name, age))

加{},引号后加.并传入变量

print('my name is %s,'%name, 'age is %d.'%age)

加占位符,引号后加%变量名

占位符:%s:字符串、整数、浮点数;%d:整数、浮点数(除去小数部分);%f:浮点数、整数(默认六位小数);%.nf:n位小数。

re模块方法

re.match(, , flags=0)

功能:根据正则表达式在字符串起始位置获取一个匹配对象,获取匹配值

参数:1:正则表达式2:匹配对象3:匹配方式(如是否区分大小写)

返回值:匹配值或者None

re.(, , flags=0)

功能:根据正则表达式在字符串中获取一个匹配对象,获取匹配值

参数:1:正则表达式2:匹配对象3:匹配方式(如是否区分大小写)

返回值:匹配值或者None

re.(, , flags=0)

功能:根据正则表达式在字符串中获取多个个匹配对象,获取匹配值

参数:1:正则表达式2:匹配对象3:匹配方式(如是否区分大小写)

返回值:列表

_语法如何应用_python语法基础50题

模块方法

.()

功能:生成0到1之间随机浮点数

参数:无

返回值:0到1之间随机浮点数

.(a, b)

功能:生成a到b之间随机整数(包含a和b)

参数:1:起始值2:结束值

返回值:a到b之间随机整数(包含a和b)

.(start, stop=None)

功能:生成start到stop之间随机整数(包含start,不包含stop)

参数:1:起始值2:结束值

返回值:start到stop之间随机整数(包含a和b)

.(seq)

功能:在序列中随机选择一个元素返回

参数:一个序列,字符串、元组、列表均可

返回值:序列中的一个值

sys模块方法

sys.exit(*args, **)

功能:退出解释器

参数:1:任意数量位置参数,作为元组处理2:任意数量关键字参数,作为字典处理

返回值:参数状态码

sys.path

功能:获取模块路径

参数:无

返回值:模块路径列表

ATM自动取款机 目录结构设计

1.建立api文件夹 -> 处理业务逻辑

.py 用户业务逻辑

.py 银行业务逻辑

2.建立文件夹 -> 文件存储位置

.py

3.建立core文件夹 -> 核心文件

src.py 功能文件

4.建立db文件夹 -> 操作数据

用户数据文件夹

.py 数据处理

5.建立lib文件夹 -> 自定义模块

.py 常用模块

项目文档

run.py 项目启动文件

示例代码

/.py

# 为数据保存查询提供user_data文件夹路径
data_path = r'D:\CodeKit\Project\aa.PythonProject\ATM\db\user_data'

侧边栏获取文件路径快捷键:Ctrl + Shift + C。

db/.py

from config.settings import data_path
import json
import os# 保存用户数据
def save_data(user_info):# 获取username的值与user_data文件夹路径拼接为用户json文件路径username = user_info['username']# 将用户数据写入到用户json文件中with open(f'{data_path}/{username}.json', 'w', encoding='utf-8') as f:json.dump(user_info, f)# 查找用户数据
def select_data(username):# 拼接用户json文件路径user_data_path = f'{data_path}/{username}.json'# 判断是否存在用户json文件if os.path.exists(user_data_path):# 打开读取用户json文件并返回with open(user_data_path, 'r', encoding='utf-8') as f:user_data = json.load(f)return user_data

文件中为我们保存与查询用户数据提供了文件夹路径,在中与的值拼接起来后即为用户json文件路径,因为此项目中未使用MySql数据库,所以通过with open与os的方法,为我们定义了与即保存查询用户数据的函数;

api/.py

from db import db_handle# 注册业务逻辑
def register_info(username, password):# 将用户数据封装为字典user_info = {'username': username,'password': password,'money': 1000,'account': [],}# 查询用户数据user_data = db_handle.select_data(username)# 该用户已存在,返回注册失败if user_data:return False, '注册失败,该用户已存在'# 该用户不存在,保存用户数据并返回注册成功else:db_handle.save_data(user_info)return True, f'{username}注册成功'# 登录业务逻辑
def login_info(username, password):# 查询用户数据user_data = db_handle.select_data(username)# 查到数据进行密码判断if user_data:# 判断输入的密码是否与用户json文件的密码相同,相同登录成功if password==user_data['password']:return True, f'{username}登陆成功'# 不同登录失败else:return False, '登陆失败,密码输入错误'# 未查到数据返回用户不存在else:return False, '登陆失败,该用户不存在'# 查看余额业务逻辑
def check_money_info(login_user):# 查询用户数据,将用户金额返回出去user_data = db_handle.select_data(login_user)return user_data['money']

api/.py

from db import db_handle
import time# 存钱业务逻辑
def save_money_info(login_user, money):# 查询用户数据,存入金额user_data = db_handle.select_data(login_user)user_data['money']+=money# 定义流水账单信息,添加到账单中now_time = time.strftime('%Y-%m-%d %H:%M:%S')account_info = f'{now_time} 用户{login_user}存款{money}元成功'user_data['account'].append(account_info)# 保存用户数据,返回流水账单信息db_handle.save_data(user_data)return True, account_infodef get_money_info(login_user, money):# 查询用户数据,取出金额user_data = db_handle.select_data(login_user)# 判断账户余额与取款金额大小,账户余额充足时即可取出if user_data['money']>=money:user_data['money']-=money# 定义流水账单信息,添加到账单中now_time = time.strftime('%Y-%m-%d %H:%M:%S')account_info = f'{now_time} 用户{login_user}取款{money}元成功'user_data['account'].append(account_info)# 保存用户数据,返回流水账单信息db_handle.save_data(user_data)return True, account_info# 账户余额不足时取出失败else:return False, '账户余额不足,请重新输入'def get_account(login_user):# 查询用户数据,将流水账单返回出去user_data = db_handle.select_data(login_user)return user_data['account']

与的代码通过对数据的保存与查询,分别进行了用户与银行的业务逻辑操作;用户业务逻辑中包含判断该用户是否存在能否注册,密码是否正确能否登录,查询余额等;银行业务逻辑包含对账户余额的修改,添加流水账单信息,查询流水账单等。

lib/.py

from core import src# check = is_login(check)
def is_login(func):def check():if src.login_user:# res = check()res = func()return reselse:print('请先登录')src.login()return check

core/src.py

import re
from api import user_interface, bank_interface
from lib import common
from pprint import pprint
import sys# 定义全局变量login_user
login_user = None# 注册
def register():while True:# 输入用户名,密码,确认密码username = input('姓名:')password = input('密码:')re_password = input('确认密码:')# 判断密码输入是否合法,合法判断密码是否一致if re.match(r'^\d{6}$', password):# 判断两次密码输入是否一致,一致获取注册结果if password==re_password:# 获取注册结果flag, msg = user_interface.register_info(username, password)if flag:print(msg)breakelse:print(msg)break# 不一致返回注册失败else:print('注册失败,密码输入不一致')# 不合法返回注册失败else:print('注册失败,密码输入不合法')# 登陆
def login():while True:# 输入姓名,密码username = input('姓名:')password = input('密码:')# 获取登录结果flag, msg = user_interface.login_info(username, password)if flag:print(msg)# 将login_user声明为全局变量global login_user# 将username的值赋给login_userlogin_user = usernamebreakelse:print(msg)break# 查看余额
# 装饰器效果check = is_login(check)
@common.is_login
def check():# 获取用户账户余额并打印出来money = user_interface.check_money_info(login_user)print(f'用户{login_user}账户余额为{money}元')# 存钱
@common.is_login
def save_money():while True:# 输入存款金额money = input('存款金额:')# 判断输入的字符串是否由数字组成if not money.isdigit():print('输入错误,请重新输入')# 跳出当前次循环continueelse:# 获取存款结果信息flag, msg = bank_interface.save_money_info(login_user, int(money))if flag:print(msg)breakelse:print(msg)break# 取钱
@common.is_login
def get_money():while True:# 输入取款金额money = input('取款金额:')# 判断输入的字符串是否由数字组成if not money.isdigit():print('输入错误,请重新输入')# 跳出当前次循环continueelse:# 获取存款结果信息flag, msg = bank_interface.get_money_info(login_user, int(money))if flag:print(msg)breakelse:print(msg)break# 查看账单
@common.is_login
def account():# 获取流水账单信息account_list = bank_interface.account_info(login_user)# 判断是否有流水账单,有则返回账单信息if account_list:pprint(account_list)# 无则返回提示信息else:print('该用户目前无流水账单')# 定义功能字典 键为整型 值为元组
# 元组第一个值放描述信息 第二个值放函数对象
func_selects = {0: ('退出', sys.exit),1: ('注册', register),2: ('登录', login),3: ('查看余额', check),4: ('存钱', save_money),5: ('取钱', get_money),6: ('查看账单', account),
}# atm项目启动
def atm():print('欢迎来到ATM自助取款机')while True:# 获取功能字典 打印描述信息for k in func_selects:print(k, func_selects[k][0])try:# 判断操作是否有效,有效则调用select = int(input('请输入你要进行的操作:'))# fun_selects字典# fun_selects[select]字典键名# func_selects[select][1]函数对象# func_selects[select][1]()调用函数if select in func_selects:func_selects[select][1]()else:print('输入错误,请重新输入')     except Exception:# 无效则返回提示信息 无效说明非数字或者无效数字等print('输入错误,请重新输入')

当在外部定义了变量, 将声明为全局变量,=可以将其的值修改,外部访问的是的值,而不是初始值None。

core/src.py的代码主要是用于与用户进行交互,相当于MVC中的视图层,用户输入数据后传入到后端页面,后端对其进行数据处理后返回到视图层,供用户进行下一步操作。

使用模块与功能 with open方法

with open(file, mode, ) as f:

功能:打开、读取、写入文件,并在操作完成后关闭文件

参数:1:文件路径2:操作模式:'r'读取'w'写入'a'追加'b'二进制打开3:编码方式:utf--16utf-32

返回值:无

json模块方法

json.dumps(obj)

功能:将对象等转为json字符串

参数:对象,即字符串,列表,字典等

返回值:json字符串

json.loads()

功能:将json字符串解析为对象

参数:json字符串

返回值:对象,即字符串,列表,字典等

json.dump(obj, file)

功能:将对象转为json字符串,并写入到文件对象中

参数:1:对象2:已打开的文件对象

返回值:无

json.load(file)

功能:从文件对象中读取json字符串,解析为对象

参数:已打开的文件对象

返回值:解析后的对象

os模块方法

os.mkdir(path)

功能:创建一个目录

参数:目录路径

返回值:无

os.(path)

功能:删除指定文件

参数:文件路径

返回值:无

os.path.(path)

功能:判断目录路径是否存在

参数:目录路径

返回值:无

装饰器与语法糖

def outer_function(msg):def inner_function():print(msg)return inner_functionmy_function = outer_function('hello')
my_function()  # 输出 hello# 内部函数inner_function作用
def inner_function():print('hello')# 语法糖  函数对象=外部函数(函数对象)
check = is_login(check)
save_money = is_login(save_money)
get_money = is_login(get_money)
account = is_login(account)# 函数对象带参数时,内部函数带上参数*args, **kwargs
@is_login
def check(username):print(username)def is_login(func):def check(*args, **kwargs):if src.login_user:res = func(*args, **kwargs)return reselse:print('请先登录')src.login()return check

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了