user=[['zhangsan','111111'],['lisi','222222'],['wangwu','333333']]
def reg():
while True:
un=input("请输入您的用户名:[注册]")
for item in user:
if un.strip() in item[0]:
print("用户名已存在")
break #break出for循环
else:
while True:
pw=input("请输入您的密码:[注册]")
if len(pw)<6:
print("密码长度小于6位,请检查")
else:
user.append([un,pw])
print("注册成功")
return True
def login():
while True:
un=input("请输入你的用户名:[登录]")
pw=input("请输入你的密码:[登录]")
for item in user:
if un==item[0] and pw==item[1]:
print("登录成功")
return True
else:
print("密码或账号名错误")
def get_menus():
menus='''
########欢迎使用ATM机##########
########请选择操作菜单##########
########1.注册 2.登录 3.退卡###
'''
while True:
print(menus)
option=input("请输入你要操作的菜单:")
if option == '1':
reg()
elif option =='2':
login()
elif option=='3':
print("感谢您的使用,欢迎下次再来")
break
else:
print("选择菜单错误,请重新选择")
get_menus()
Python的控制结构 顺序结构 分支结构 循环结构
分支结构
每个条件后面要使用冒号(:),表示接下来是满足条件后要执行的语句块
使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块
在Python中会被认为是假(False)的值:None、[]、‘’、0、{}、()
循环结构
while循环
使用for循环来遍历列表 使用for...in...的语法 循环读取name中的元素存放到变量item中
for循环一般用在一个已知的集合里面进行循环的时候,比如列表里面循环、range数字范围内循环、集合循环和字典循环等
while一般用于明确知道循环条件,比如大于某个值,或者某个值为真或为假是运行循环
循环break和continue break用于跳出当前循环,continue用于结束本次循环,并继续下一次循环
循环中加入与for同级的else
循环中的else语法 不管是for循环还是while循环,当循环中写了else语句,只有当循环体正常循环结束后才会执行else里面的语句 如果循环过程中执行了break,则else不会执行
函数
有时程序中要多次实现某一功能,就需要多次重复编写实现此功能的程序代码,这使程序冗长,不精炼,在程序设计中要善于利用函数,可以减少重复编写程序段的工作量,同时可以方便地实现模块化的程序设计
函数是Python为了代码最大程度的重用最小代码冗余而提供的基本程序结构
函数是一种设计工具,它能让程序员将复杂的系统分解为可管理的部件
函数用于将相关功能打包并参数化
从类型上来说,Python中有4种不同类型的函数
1.内置函数:Python内置已经写好的函数,如range,print等
2.模块函数:一个Python模块中导入的函数
3.自定义函数:自定义函数
4.嵌套函数:函数中的函数
函数定义
Python定义函数必须使用def关键字,函数名为用户自定义名称(函数名称的定义规范跟普通变量名一致),参数列表为传给此函数使用的参数 def 函数名(函数参数):函数体
规则:
1.函数代码以def关键字开头,后接函数标识符名称和圆括号()
2.任何传入从外部传入函数的参数必须放在函数标识符后面的圆括号中
3.函数的第一行语句可以选择性使用文档字符串---用于存放函数说明
4.函数内容以冒号起始,并且缩进。return[表达式]结束函数,选择性地返回一个值给调用方
5.不带表达式的return相当于返回None
返回值、函数定义、函数调用、参数
函数参数
形参:也叫形式参数,在函数定义时,跟在函数名后面的括号内定义的参数。形参的主要作用是用于占位,形参的实际值是由调用函数时传递的实际参数决定的
实参:也叫实际参数,是指函数调用时在对应的形参位置传入的实际参数值
改变形参的值是否会同时改变实参的值,这取决于参数的数据类型
如果参数是不可变数据类型,则改变形参的值并不会改变实参的值
如果参数是可变数据类型,则改变形参的值也同时会改变实参的值
函数参数-位置参数
参数在函数中相当于一个变量,而这个变量的值是在调用函数的时候被赋予的
位置参数须以正确的顺序传入函数,调用时的数量必须和声明时的一样
函数参数-关键字参数
关键字参数就是使用键值对的方式来进行参数传值,参数名和参数值之间用=号来连接。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为Python解释器能够用参数名匹配参数值
函数参数-默认值餐宿
调用函数时,如果没有传递参数,则会使用默认参数。需要函数声明时指定默认值
函数-不定长参数
可能需要一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数
不定长参数声明时不会命名 加了星号(*)的变量名会存放所有未命名的变量参数。如果在函数调用时没有指定参数,它就是一个空元组
除了能通过*args的形式传递元组类型的不定长参数外,还可以通过定义**kwargs来传递字典类型的不定长参数
函数变量的作用域
Python中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的
变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称
根据变量的作用域,函数中的变量可分为全局变量和局部变量
函数内的想改变用全局变量时,需要在函数内使用关键字global
全局变量使用规则:
1.当我们在一个函数中创建一个变量时,默认情况下它是局部变量
2.当我们在函数之外定义一个变量时,默认情况下它是全局变量。不必使用global关键字
3.在函数里面读取一个全局变量时,不需要加global,但如果要给全局变量重新赋值(=),则必须使用global。注意,如果调用该变量的方法不算重新赋值,不如list.append这种,可以不用global
4.如果函数内部有与全局变量名字相同的局部变量,则全局变量必须使用global来进行标识
5.在一个函数外使用global关键字没有效果
# coding=gbk
username=['zhangsan','lisi','wangwu']
password=['111111','222222','333333']
def reg():
print("欢迎使用ATM系统")
while True:
un=input("请输入您的用户名:[注册]")
if un.strip() in username:
print("用户名已存在")
else:
break
while True:
pw=input("请输入您的密码:[注册]")
if len(pw)<6:
print("密码长度小于6位,请检查")
else:
break
username.append(un)
password.append(pw)
print("注册成功")
return True
def login():
while True:
un=input("请输入你的用户名:[登录]")
pw=input("请输入你的密码:[登录]")
if un in username:
i=username.index(un)
if password[i]==pw:
print("登录成功")
break
else:
print("密码错误")
else:
print("要登录的用户名不存在")
if reg():
login()
def get_menus():
menus='''
########欢迎使用ATM机##########
########请选择操作菜单##########
#1.注册 2.登录 3.查询余额 4.退卡#
'''
while True:
print(menus)
option=input("请输入你要操作的菜单:")
if option == '1':
reg()
elif option =='2':
login()
elif option=='3':
check_balance()
elif option=='4':
print("感谢您的使用,欢迎下次再来")
break
else:
print("选择菜单错误,请重新选择")
current_user_balance=None
user_list=[
{'user':'zhangsan','password':'111111','balance':1000},
{'user':'lisi','password':'222222','balance':2000},
{'user':'wangwu','password':'333333','balance':5000}
]
def reg():
while True:
un=input("请输入您的用户名:[注册]")
for item in user_list:
if un.strip() in item['user']:
print("用户名已存在")
break #break出for循环
else:
while True:
pw=input("请输入您的密码:[注册]")
if len(pw)<6:
print("密码长度小于6位,请检查")
else:
user_list.append({'user':un,'password':pw,'balance':3000})
print("注册成功")
return True
def login():
while True:
un=input("请输入你的用户名:[登录]")
pw=input("请输入你的密码:[登录]")
for item in user_list:
if un==item['user'] and pw==item['password']:
print("登录成功")
global current_user_balance
current_user_balance=item['balance']
return True
else:
print("密码或账号名错误")
def check_balance():
if current_user_balance:
print("当前用户余额为:",current_user_balance)
else:
print("请先登陆后再进行查询余额操作")
get_menus()
user=[['zhangsan','111111'],['lisi','222222'],['wangwu','333333']]
def reg():
while True:
un=input("请输入您的用户名:[注册]")
for item in user:
if un.strip() in item[0]:
print("用户名已存在")
break #break出for循环
else:
while True:
pw=input("请输入您的密码:[注册]")
if len(pw)<6:
print("密码长度小于6位,请检查")
else:
user.append([un,pw])
print("注册成功")
return True
def login():
while True:
un=input("请输入你的用户名:[登录]")
pw=input("请输入你的密码:[登录]")
for item in user:
if un==item[0] and pw==item[1]:
print("登录成功")
return True
else:
print("密码或账号名错误")
def get_menus():
menus='''
########欢迎使用ATM机##########
########请选择操作菜单##########
#####1.注册 2.登录 3.退卡#######
'''
while True:
print(menus)
option=input("请输入你要操作的菜单:")
if option == '1':
reg()
elif option =='2':
login()
elif option=='3':
print("感谢您的使用,欢迎下次再来")
break
else:
print("选择菜单错误,请重新选择")
get_menus()
def get_menus():
menus='''
########欢迎使用ATM机##########
########请选择操作菜单##########
1.注册 2.登录 3.查询余额 4.存款 5.取款 6.转账 7.取卡
'''
while True:
print(menus)
option=input("请输入你要操作的菜单:")
if option == '1':
reg()
elif option =='2':
login()
elif option=='3':
check_balance()
elif option == '4':
desposit()
elif option == '5':
withdraw()
elif option == '6':
transfer()
elif option == '7':
print("感谢您的使用,欢迎下次再来")
break
else:
print("选择菜单错误,请重新选择")
current_user=None
current_user_balance=None
user_list=[
{'user':'zhangsan','password':'111111','balance':1000},
{'user':'lisi','password':'222222','balance':2000},
{'user':'wangwu','password':'333333','balance':5000}
]
def reg():
while True:
un=input("请输入您的用户名:[注册]")
for item in user_list:
if un.strip() in item['user']:
print("用户名已存在")
break #break出for循环
else:
while True:
pw=input("请输入您的密码:[注册]")
if len(pw)<6:
print("密码长度小于6位,请检查")
else:
user_list.append({'user':un,'password':pw,'balance':3000})
print("注册成功")
return True
def login():
while True:
un=input("请输入你的用户名:[登录]")
pw=input("请输入你的密码:[登录]")
for item in user_list:
if un==item['user'] and pw==item['password']:
print("登录成功")
global current_user
current_user=item
return True
else:
print("密码或账号名错误")
def check_balance():
if current_user:
print("当前用户余额为:",current_user['balance'])
else:
print("请先登陆后再进行查询余额操作")
def desposit():
if current_user:
money=input("请输入你要存款的金额:")
if money[-2:]=='00' and len(money)>2:
current_user['balance']+=int(money)
print("存款成功,当前的金额为:",current_user['balance'])
else:
print("存入金额格式不正确")
else:
print("用户尚未登录")
def withdraw():
if current_user:
money=input("请输入你要取款的金额:")
if money[-2:]=='00' and len(money)>2:
if current_user['balance']>=int(money):
current_user['balance']-=int(money)
print("取款成功,已取出:",money)
print("取款成功,余额为:",current_user['balance'])
else:
print("你的当前存款不足")
else:
print("取款金额格式不正确")
else:
print("用户尚未登录")
def transfer():
if current_user:
to_user=input("转账的用户账号:")
if current_user['user']==to_user:
print("不能自己转账给自己")
else:
for user in user_list:
if user['user']==to_user:
money=input("你要转账的金额:")
if money[-2:]=='00' and len(money)>2:
if current_user['balance']>=int(money):
current_user['balance']-=int(money)
user['balance']+=int(money)
print("转账成功,你的余额为:",current_user['balance'])
else:
print("你的余额不足,无法转账")
else:
print("转账金额格式不正确")
break
else:
print("对方账号不存在")
else:
print("用户尚未登录")
get_menus()