Python之路,Day02-IDE、用户输入与列表数据
本节内容
1、IDLE的替代工具
2、数字、字符串、对象
3、注释
4、用户输入
5、python的内置数据结构
6、列表
7、习题
1、pycharm and jupyter notebook
思考:
1、甚么是IDE?
1 ''' 2 集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。 3 '''
2、甚么是IDLE?
1 #IDLE 是一个纯 Python 下自带的简洁的集成开发环境(IDE)
1、pycharm
安装网址:https://www.jetbrains.com/pycharm/ 安装过程(略)
永久激活:https://www.liuzhishi.com/3184.html
优势:1、可以自动补全。
2、方便于代码调试,可以随时终止进程。(vim、sublime等不能直接调试)
2、jupyter notebook
问题1:甚么是jupyter notebook?
问题2:如何在CMD中运行jupyter notebook?
尝试一下吧:
甚么是jupyter notebook?
1、jupyter是一个基于web的IDE(集成开发环境)。
2、兼具脚本操作和交互式操作的特性;
3、笔记式编辑代码和运行,便于调试,便于保存。
notebook使用举例:
主要为开发商和数据科学家提供举办机器学习竞赛、托管数据库、编写和分享代码的平台。
Inside Kaggle you’ll find all the code & data you need to do your data science work. Use over 19,000 public datasets and 200,000 public notebooks to conquer any analysis in no time.
eg:
2、 在cmd中运行jupyter:
①安装
②运行
学会了么?是不是很简单。
总结:
cmd/IDLE 中的交互执行:偶尔执行一些简单的语句、测试
jupyter notebook:介于交互和脚本之间的(可做笔记,关心中间过程的输出)
IDLE 小型项目,学习初期的选择,功能完善
PyCharm 中大型项目中方便组织较多文件,功能更为丰富
pycharm 将成为学习python之路上的最重要的工具。
jupyter 将成为我们数据科学(包含大数据、数据分析)之路的重要工具。
2、变量(数字、字符串、对象)
请同学们一定要详细阅读:https://docs.python.org/3.7/tutorial/introduction.html#numbers 学有余力的同学将链接中的代码学习一遍。
1、数字(Numbers)
The integer numbers (e.g. 2
, 4
, 20
) have type int
, the ones with a fractional part (e.g. 5.0
, 1.6
) have type float
. We will see more about numeric types later in the tutorial.
1 >>> 2 + 2 2 4 3 >>> 50 - 5*6 4 20 5 >>> (50 - 5*6) / 4 6 5.0 7 >>> 8 / 5 # division always returns a floating point number 8 1.6
Division (/
) always returns a float. To do floor division and get an integer result (discarding any fractional result) you can use the //
operator; to calculate the remainder you can use %
:
1 >>> 17 / 3 # classic division returns a float 2 5.666666666666667 3 >>> 4 >>> 17 // 3 # floor division discards the fractional part 5 5 6 >>> 17 % 3 # the % operator returns the remainder of the division 7 2 8 >>> 5 * 3 + 2 # result * divisor + remainder 9 17
1 import random 2 wait_time = random.randint(1,60) 3 print(wait_time)
Python中的数据类型(整型、浮点型和 复数 )
eg:
2、字符串(Strings)
Besides numbers, Python can also manipulate strings, which can be expressed in several ways.
They can be enclosed in single quotes ('...'
) or double quotes ("..."
) with the same result 2. \
can be used to escape quotes
1 >>> 'spam eggs' # single quotes 2 'spam eggs' 3 >>> 'doesn\'t' # use \' to escape the single quote... 4 "doesn't" 5 >>> "doesn't" # ...or use double quotes instead 6 "doesn't" 7 >>> '"Yes," they said.' 8 '"Yes," they said.' 9 >>> "\"Yes,\" they said." 10 '"Yes," they said.' 11 >>> '"Isn\'t," they said.' 12 '"Isn\'t," they said.'
3、对象
python中“一切皆是对象”。P48-49 了解
3、注释
单行注释:# 被注释内容
eg1:
1 # -*- coding:utf-8 -*- 2 # Author:Zhichao
多行注释:""" 被注释内容 """
eg2:
1 ''' 2 import random 3 wait_time = random.randint(1,60) 4 print(wait_time) 5 6 word = "bottles" 7 print(word) 8 '''
除此之外,""" 被注释内容 """ 还可以打印变量
eg:3
1 test1 =''' 2 import random 3 wait_time = random.randint(1,60) 4 print(wait_time) 5 6 word = "bottles" 7 print(word) 8 ''' 9 print(test1)
4、用户输入
eg:
1 # -*- coding:utf-8 -*- 2 # Author:Zhichao 3 4 username = input("username:") 5 password = input("password:") 6 7 print(username,password)
字符串拼接+打印:
eg:
1 name = input("name:") 2 age = input("age:") 3 job = input("job:") 4 salary = input("salary:") 5 6 info = '''----- INFO OF ''' + name +'''------''' + ''' 7 age:''' + age+''' 8 job:''' + job +''' 9 salary:'''+salary 10 11 print(info)
是不是很麻烦?有没有更简单的方式将打印内容?接下来我们来学习 %s 占位符。
1 name = input("name:") 2 age = input("age:") 3 job = input("job:") 4 salary = input("salary:") 5 6 info = '''-------INFO OF %s ------- 7 Name:%s 8 Age:%s 9 Job:%s 10 Salary:%s 11 '''% (name,name,age,job,salary) 12 13 print(info)
%s代表 string
%d代表 number
%f代表 float
更进一步:设置数据类型,将age、salary设置为number。
1 name = input("name:") 2 age = int(input("age:")) #注意! python中默认所有的输入均为string 3 job = input("job:") 4 salary = int(input("salary:")) 5 6 info = '''-------INFO OF %s ------- 7 Name:%s 8 Age:%d 9 Job:%s 10 Salary:%d 11 '''% (name,name,age,job,salary) 12 13 print(info)
.format():
1 info2 = '''-------INFO OF {_name} ------- 2 Name:{_name} 3 Age:{_age} 4 Job:{_job} 5 Salary:{_salary} 6 '''.format(_name=name, 7 _age=age, 8 _job=job, 9 _salary=salary) 10 print(info2)
1 info3 = '''-------INFO OF {0} ------- 2 Name:{0} 3 Age:{1} 4 Job:{2} 5 Salary:{3} 6 '''.format(name,age,job,salary) 7 print(info3)
项目1:
1 # Author:Zhichao 2 3 today = input("weekday:") 4 if today == "Saturday": 5 print("Party!") 6 elif today == "Sunday": 7 condition = input("mood:") 8 if condition == "Headache": 9 print("Recover, then rest.") 10 else: 11 print("Rest.") 12 else: 13 print("Work, work, work.")
5、Python内置数据结构
6、列表
思考:如果把我们班同学的名字都存起来,你会怎么做?用变量name1、name2、name3....来存么?
还是这样:names=“zhangyang liuming lihua”?。。那么如果想让你取出其中某一个值该怎么办?
Python knows a number of compound data types, used to group together other values. The most versatile is the list, which can be written as a list of comma-separated values (items) between square brackets. Lists might contain items of different types, but usually the items all have the same type.
请同学们详细阅读官方文档:https://docs.python.org/3/tutorial/introduction.html#lists
来看一些例子
eg1:
1 names = ["Mike","Mary","Jan","Jack"] 2 3 print(names)
eg2:
1 >>> squares = [1, 4, 9, 16, 25] 2 >>> squares 3 [1, 4, 9, 16, 25]
回顾:for循环
1 for ch in "Hi!": 2 print(ch)
for加上列表来让我们的列表开始工作(大脑P60):
1 vowels = ['a','e','i','o','u'] 2 word = "Milliways" 3 for letter in word: 4 if letter in vowels: 5 print(letter)
1 vowels = ['a','e','i','o','u'] 2 word = "Milliways" 3 found = [] 4 for letter in word: 5 if letter in vowels: 6 if letter not in found: 7 found.append(letter) 8 for vowel in found: 9 print(vowel)
1 vowels = ['a','e','i','o','u'] 2 word = input("Provide a word to search for vowels:") 3 found = [] 4 for letter in word: 5 if letter in vowels: 6 if letter not in found: 7 found.append(letter) 8 for vowel in found: 9 print(vowel)
列表认识开始、结束和步长值:
letters[start:stop:step]
如果没有指定开始值,则默认为0;
如果没有指定结束指,则取列表允许的最大值;
如果没有指定步长值,则默认步长为1.
首先,列表也是一个变量,构建列表需要用”[]“,里面的数据之间用”,“进行分隔。
①list的查询(切片):
思考eg1中如果我们想取出某一个值应该怎么办?取出一些值呢?
eg3:
1 #Zhichao 2 3 names = ["Mike","Mary","Jan","Jack"] 4 5 print(names) 6 print(names[0],names[2]) #取出某一个值 7 print(names[1:3]) #切片 取出中间一些连续的值(还是列表) 8 #思考:如果列表有几千个值,几万个值,那么想取出最后一个值怎么办? 9 print(names[-1]) #切片 取出最后一个值 10 print(names[-3:-1]) #切片 从后往前取出一些值(还是列表),思考为什么不是[-1:-3]? 11 print(names[-2:]) #切片 取到最后一个值 12 print(names[:2]) #切片 同上,即“0”可以省略
②list 增、删、改:
eg:
1 #Zhichao 2 3 names = ["Mike","Mary","Jan","Jack"] 4 5 print(names) 6 names.append("Alex") #list增:append增加数据,观察增加的位置。 7 print(names) 8 names.insert(1,"Dan") #list增:insert指定位置增加数据 9 print(names) 10 names[3] = "Zhichao" #list改:直接找到列表中某个值,然后赋新值 11 print(names) 12 names.remove("Zhichao") #list删:remove指定某个数据进行删除 13 print(names) 14 del names[1] #list删: del指定[x]的某个数据位置进行删除 15 print(names) 16 names.pop() #list删:Remove and return item at index (default last) 不指定默认删除最后一个值 17 print(names) 18 names.pop(1) #lsit删:如果加上指定位置,names.pop(1)<==> del names[1] 19 print(names)
参考结果:
③列表的复制 .copy()
1 first = [1,2,3,4,5] 2 second = first 3 print(second) 4 second.append(6) 5 print(first)
正确的复制列表的方法1:
1 #接上面的代码 2 third = second.copy() 3 third.append(7) 4 print(second,third)
方法2:
利用切片:
1 a = [1,2,3,4] 2 b = a[:] 3 print(a,b) 4 b.append(5) 5 print(a,b)
预:尝试填大脑P67处理列表代码
项目2(将"Don‘t panic!" 转换为 "on tap"):大脑P68(上课详解)
1 # Author:Zhichao 2 3 phrase = "Don't panic!" 4 plist = list(phrase) 5 print(phrase) 6 print(plist) 7 8 for i in range(4): 9 plist.pop() 10 plist.pop(0) 11 plist.remove("'") 12 plist.extend([plist.pop(),plist.pop()]) 13 plist.insert(2,plist.pop(3)) 14 new_phrase = ''.join(plist) 15 print(plist) 16 print(new_phrase)
1 # -*- coding:utf-8 -*- 2 # Author:Zhichao 3 4 phrase = "Don't panic!" 5 plist = list(phrase) 6 print(phrase) 7 print(plist) 8 9 new_pharse = ''.join(plist[1:3]) 10 new_pharse = new_pharse + ''.join([plist[5],plist[4],plist[7],plist[6]]) 11 print(plist) 12 print(new_pharse)
思考:panic和painc2 那个更好?
阅读大脑P82-P85
for 循环了解列表:
课本案例:
1 # -*- coding:utf-8 -*- 2 # Author:Zhichao 3 4 paranoid_android = "Marvin" 5 letters = list(paranoid_android) 6 for char in letters: 7 print('\t',char)
1 # -*- coding:utf-8 -*- 2 # Author:Zhichao 3 4 paranoid_android = "Marvin, the Paranoid Android" 5 letters = list(paranoid_android) 6 for char in letters[:6]: 7 print('\t',char) 8 print() 9 for char in letters[-7:]: 10 print('\t'*2,char) 11 print() 12 for char in letters[12:20]: 13 print('\t'*3,char) 14 print()
7 习题
购物车程序项目:
要求:1、运行程序后,让用户输入支付宝余额,然后打印我们的商品列表给用户。
2、让用户输入商品编号进行商品的购买。
3、用户选择商品后,检查用户的余额是否够,若够则直接扣款,不够则提醒用户。
4、用户可以随时退出购买,推出时打印用户已购买的商品和支付宝余额。