######pycharm的安装#######
"- 官网下载pycharm源码包\n"
"- 解压源码包到指定位置, 超级用户建议解压到/opt目录, 普通用户建议解压到当前用户家目录;"
tar xf pycharm-community-2017.1.4.tar.gz -C /opt/
"- 进入解压目录/opt/pycharm-community-2017.1.4/, Install-Linux-tar.txt详细介绍了安装过程;"
cd /opt/pycharm-community-2017.1.4/bin
./pycharm.sh
选择实验环境是python2还是python3
pycharm常用快捷键
- pycharm设置界面(ctrl+alt+s)
- 修改菜单栏字体
- 修改代码栏字体
- 修改python解释器位置
- 如何安装pycharm的插件(eg:统计代码的插件Statics)
- 如何快速创建文件(alt+insert)
- 格式化python代码, 使得风格好看(ctrl+alt+l)
- 如何修改指定功能的快捷键
- 如何撤销代码的修改(ctrl+z)
- 如何取消撤销的代码的修改(ctrl+shift+z)
- 快速重命名(shift+F6)
- 快速注释代码(ctrl+/)
- 快速取消注释代码(ctrl+/)
#################列表####################
# c语言中的数组: 存储同一种数据类型的集和。
# 列表(打了激素的数组): 可以存储任意数据类型的集和。
li = [1, 1.2, 2j+3, True, "hello"]
print(li, type(li))
#列表特性#
services = ['http', 'ssh', 'ftp']
* 索引
正向索引
print(services[0])
反向索引
print(services[-1])
*切片
print(services[::-1]) # 列表的反转
print(services[1:]) # 除了第一个之外的其他元素
print(services[:-1]) # 除了最后一个之外的其他元素
*重复
print(services*3)
*连接
services1 = ['mysql', 'firewalld']
print(services + services1)
*成员操作符
print('firewalld' in services)
print('firewalld' not in services)
services=['http','ssh','ftp']
print(services[0])
http
print(services[-1])
ftp
print(services[::-1])
['ftp', 'ssh', 'http']
print(services[1:])
['ssh', 'ftp']
print(services[:-1])
['http', 'ssh']
print(services*3)
['http', 'ssh', 'ftp', 'http', 'ssh', 'ftp', 'http', 'ssh', 'ftp']
services1=['mysql','firewalld']
print(services+services1)
['http', 'ssh', 'ftp', 'mysql', 'firewalld']
print('firewalld' in services)
False
# 列表里面也是可以嵌套列表的#
services2 = [['http', 80], ['ssh', 22], ['ftp',21]]
嵌套列表索引
print(services2[0][0])
print(services2[-1][1])
嵌套列表的切片
print(services2[:][1])
print(services2[:-1][0])
print(services2[0][:-1])
# 如何for循环遍历#
for service in services:
# print输出不换行,
print(service, end=',')
# python2:print不换行
# python3:
print("hello", end=',')
#列表的增删改查#
#列表元素的增加
services = ['http', 'ssh', 'ftp']
1.
print(services+['firewalld'])
2. append:追加: append是追加一个元素到列表中;
services.append('firewalld')
print(services)
3. extend:拉伸: 追加多个元素到列表中
services.extend(['hello', 'firewalld', 'mysql'])
print(services)
4. insert:插入
services.insert(0, 'firewalld')
print(services)
#列表元素的删除
services = ['ftp', 'ssh', 'http', 'ftp']
1. pop
services.pop(0)
2.remove
services.remove('ssh')
print(services)
3.clear: 清空列表里面的所有元素
services.clear()
print(services)
4. del : 删除列表元素的;
del services
print(services)
print(services)
print("删除列表第一个索引对应的值:", end=" ")
del services[1]
print(services)
#列表的修改#
services = ['ftp', 'ssh', 'http', 'ftp']
1.通过索引, 重新赋值
services[0] = 'mysql'
print(services)
2.通过slice(切片)
services[:2] = ['mysql', 'firewalld']
print(services)
#列表的查看#
import random
services = ['ftp', 'ssh', 'http', 'ftp']
1.查看出现次数
print(services.count('ftp'))
2.查看指定元素的索引值(也可与以指定范围查看)
print(services.index('ssh'))
print(services.index('ftp', 2, 8))
#排序查看, 按照Ascii码进行排序的;
print(services.sort())
print(services)
# 对字符串排序不区分大小写
"""
phones = ['alice', 'bob', 'harry', 'Borry']
phones.sort()
phones
['Borry', 'alice', 'bob', 'harry']
phones.sort(key=str.upper)
phones
['alice', 'bob', 'Borry', 'harry']"""
# # 随机生成10个整形数, 范围为1~10之间
方法1:
import random
numbers = []
for i in range(10):
num = random.randint(1,10)
numbers.append(num)
print(numbers)
numbers.sort()
print(numbers)
"""
方法2:
import random
range(10)
li = list(range(10))
li
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]# 将原有的列表顺序打乱, 间接实现随机生成整形数
random.shuffle(li)
li
[1, 0, 4, 9, 3, 5, 8, 2, 7, 6]
"""
# li.copy() ##列表的拷贝
# li.reverse() ##列表的倒序
li=[1,4,2,5]
li1=li.copy()
id(li)
139861887408456
id(li1)
139861872424456
li.reverse()
li
[5, 2, 4, 1]
"""
##########知识拓展#############
#is和==的区别
变量:
id: 在内存中存储的位置;id(a)
value: ==
type:变量的数据类型; type(a)
==: value, type
is: 三个都判断
** a is b ====> True, a==b一定相等, 返回True;
** a==b ====> True, a is b 不一定;
li=[1,2,3]
li1=li
li2=li.copy()
id(li)
140301820696328
id(li1)
140301820696328
id(li2)
140301825996616
li == li1
True
li is li1
True
li == li2
True
li is li2
False
#深拷贝和浅拷贝
- 直接赋值(li1 = li): 只传递对象的引用, li1指向对象li的内存地址空间,
因此, 原有列表li改变, 被赋值的li1也会做相应的改变.
- 浅拷贝(三种实现方式 eg: li2=li.copy()):li和li2的内存地址不同,
但是子对象的内存地址相同, 因此,原始数据改变 , 子对象也改变.
- 深拷贝(import copy, eg: li3=copy.deepcopy(li)), li和li3的内存地址不同,
包含子对象的拷贝, 所以原始对象改变并不会造成深拷贝里面任何子项的改变.
*** 当深拷贝和浅拷贝, 针对的对象全部是不可变数据类型时, 两者效果相同;
*** 当深拷贝和浅拷贝, 针对的对象包含是可变数据类型时, 两者才有上述区别;
import copy
li=[['a','b'],1,2]
li1=li.copy()
li2=copy.deepcopy(li)
li[0].append('c')
li1
[['a', 'b', 'c'], 1, 2]
li2
[['a', 'b'], 1, 2]
id(li[0])
140321420061576
id(li1[0])
140321420061576
id(li2[0])
140321435159176
改进:
根据用于指定月份,打印该月份所属的季节。
**提示: 3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
"""
假定有下面这样的列表:
names = ['fentiao', 'fendai', 'fensi', 'apple']
输出结果为:'I have fentiao, fendai, fensi and apple.'
- 用户登陆
1) 通过索引遍历密码
- 退出
1). 系统里面有多个用户, 用户信息目前保存在列表里面;
users = ['root', 'cooffee']
passwds = ['123', '456']
2). 用户登陆(判断用户登陆是否成功):
1). 判断用户是否存在?(inuser in users)
2). 如果存在:
1). 判断用户密码是否正确?
(先找出用户对应的索引值, 根据passwds[索引值拿出该用户的密码)
如果正确: 登陆成功, 退出循环;
如果密码不正确, 重新登陆, 总共有三次登陆机会
3). 如果不存在:
重新登陆, 总共有三次登陆机会
users = ['root', 'cooffee'] passwds = ['123', '456'] trycount = 0 while trycount < 3: inuser = input("用户名:") inpasswd = input("密码:") trycount += 1 if inuser in users: index = users.index(inuser) passwd = passwds[index] if inpasswd == passwd: print("%s登陆成功" %(inuser)) break else: print("%s登陆失败:密码错误!" %(inuser)) print("你还有%d次机会" %(3-trycount)) else: print("用户%s不存在" %(inuser)) else: print("已经登陆三次")
后台管理员只有一个用户: admin, 密码: admin
当管理员登陆成功后, 可以管理前台会员信息.
会员信息管理包含:
添加会员信息
删除会员信息
查看会员信息
退出
print("管理员登陆".center(50, '*')) inuser = input('UserName:') inpasswd = input('Password:') # 所有会员用户名 users = ['root', 'cooffee'] # 所有会员的密码 passwds = ['123', '345'] if inuser == 'admin' and inpasswd == 'admin': print("管理员登陆成功!") print("会员管理".center(50, '*')) while True: print(""" 操作目录 1 - 添加会员信息 2 - 删除会员信息 3 - 查看会员信息 4 - 退出 """) choice = input("请选择你的操作:") if choice == '1': print("添加会员信息".center(50, '*')) addUser = input("添加会员名:") if addUser in users: print("用户%s已经存在" % (addUser)) else: addPasswd = input("密码:") # 需要把用户和密码添加到列表; users.append(addUser) passwds.append(addPasswd) print("添加用户%s成功" % (addUser)) elif choice == '2': print("删除会员信息".center(50, '*')) delUser = input("删除会员名:") delIndex = users.index(delUser) users.remove(delUser) passwds.pop(delIndex) print("删除会员%s成功!" % (delUser)) elif choice == '3': print("查看会员信息".center(50, '*')) print("\t用户名\t密码") userCount = len(users) # 2 # 0,1 for i in range(userCount): print('\t%s\t%s' % (users[i], passwds[i])) elif choice == '4': exit() else: print("请输入正确的选择") else: print("管理员登陆失败!")