BUSS6002 Python 基础语法
print('xxxxx')
输出字符串
print() 函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出, 默认用一个空格来间隔多个对象,这里sep = ''
使打印时不加空格
print('Hello','world!')
print('Hello','world!', sep = '')
在需要在字符中使用特殊字符时,用反斜杠\
转义字符
在行尾时 | 续行符 |
---|---|
\ | 反斜杠符号 |
\' | 单引号 |
\" | 双引号 |
\n | 换行 |
\b | 退格(Backspace) |
注意中文的标点和英文标点的不同
注意题目中输出的格式里空格的要求
-
字符串运算符
下表实例变量 a 值为字符串 "Hello",b 变量值为 "Python":
操作符 描述 实例 + 字符串连接 >>>a + b 'HelloPython' * 重复输出字符串 >>>a * 2 'HelloHello' [] 通过索引获取字符串中字符 >>>a[1] 'e' [ : ] 截取字符串中的一部分 >>>a[1:4] 'ell' in 成员运算符 - 如果字符串中包含给定的字符返回 True >>>"H" in a True not in 成员运算符 - 如果字符串中不包含给定的字符返回 True >>>"M" not in a True r/R 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 >>>print r'\n' \n >>> print R'\n' \n
Variables
-
Python有五个标准的数据类型:
Numbers(数字)
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)
数字类型包括
int
整数型和float
浮点数型(有小数点)-
数据类型可以相互转换
int(x)
转换成整数型str()
转化成字符串型type(x)
查看x 的数据类型
List
序列 list 是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1
-
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来
列表里的元素可以是不同数据类型的
list1 = ['physics', 'chemistry', 1997, 2000]
-
使用下标索引来访问列表中的值,注意索引是从0开始数的
当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界,记得最后一个元素的索引是
len(classmates) - 1
。list = [1, 2, 3, 4, 5, 6, 7 ] print( list[0] )
-
如果要取最后一个元素,除了计算索引位置外,还可以用
-1
做索引,直接获取最后一个元素:以此类推,可以获取倒数第2个、倒数第3个:
list[ -1 ] list[ -2 ]
-
list.append(x)
向 list 的末尾里加入元素 xlist.insert(index, x)
把元素x插入到指定的位置,比如索引号为1
的位置:list.insert(1, 'x')
-
用
pop()
方法, 删除list末尾的元素list.pop() print(list)
用
pop(index)
方法删除指定位置的元素list.pop(1) print(list)
-
要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:
list[1] = 9 print(list)
-
list元素也可以是另一个list,比如:
list[0] = ['a','b'] print(list)
要拿到
'a'
可以写s[0][0]
,因此s
可以看成是一个二维数组,类似的还有三维、四维……数组,不过很少用到。 -
用
len()
函数可以获得list元素的个数:len(list)
-
list 也可以是空的,他的长度为0
L = [] print(len(L))
Input
可以让用户输入字符串,并存放到一个变量里,并且可以让你显示一个字符串来提示用户
name = input('Your name: ')
print(name)
input
函数输出的是字符串,如果想对输入的数字进行操作,需要用int()
函数用于将一个字符串转换为整型。float()
函数转换成浮点数(有小数点的数)
Conditionals
-
"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。
else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句
判断条件可以用>(大于)、<(小于)、==(等于)、!=(不等于)、>=(大于等于)、<=(小于等于)
-
如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;
使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功,not (非)
任何非零、或非空(null)的值均为true
==(等于)不能写成
=
,语法不报错但是逻辑会出错
flag = False
name = input('Your name: ')
if name == 'python':
flag = True
print ('welcome')
else:
print (name)
Loops
-
for
循环语句- 可以遍历任何序列的项目,如一个 list 或者一个字符串
for letter in 'Python': print '当前字母 :', letter
流程图
- 通过索引遍历
想获取 list 变量有多少元素,用len()
函数
用range(x)
函数生成 0 到 X-1 的整数序列 [ 0, 1, 2 ]
fruits = ['banana', 'apple', 'mango']
for index in fruits:
print ('水果 :', index)
print ("Good bye!")
-
for … else
for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完for num in range(10,20): # 迭代 10 到 20 之间的数字 for i in range(2,num): # 根据因子迭代 if num%i == 0: # 确定第一个因子 j=num/i # 计算第二个因子 print ('num 等于 i * j ') break # 跳出当前循环 else: # 循环的 else 部分 print num, '是一个质数'
-
while
循环执行语句可以是单个语句或语句块。判断条件为真时执行下面的语句块。当判断条件假false时,循环结束
count = 0 while (count < 9): print ('The count is:', count) count += 1 print ("Good bye!")
流程图
Comments
-
python中单行注释采用 # 开头。
# 注释
可以用鼠标框选许多行之后用
command + /
键一键注释(Windows 是Ctrl+/
)注释可以在语句或表达式行末
-
python 中多行注释使用三个单引号(''')或三个双引号(""")。
''' _oo0oo_ o8888888o 88" . "88 (| -_- |) 0\ = /0 ___/`---'\___ .' \\| |// '. / \\||| : |||// \ / _||||| -:- |||||- \ | | \\\ - /// | | | \_| ''\---/'' |_/ | \ .-\__ '-' ___/-. / ___'. .' /--.--\ `. .'___ ."" '< `.___\_<|>_/___.' >' "". | | : `- \`.;`\ _ /`;.`/ - ` : | | \ \ `_. \_ __\ /__ _/ .-` / / =====`-.____`.___ \_____/___.-`___.-'===== 佛祖保佑 永无BUG '''
Function
- 函数是可重复使用的,用来实现某种功能的代码段
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None
def my_abs(x):
# "绝对值"
if x >= 0:
return x
else:
return -x
my_abs(-2)
import
我们可以使用 import 语句来引入库文件(模块),Python 有大量的好用模块,同样我们也能调用自己写的模块
在调用模块中的函数时,必须这样引用:
模块名.库文件名
import numpy
a = numpy.array([1])
print(a)
有时候模块名太长,我们也可以给模块取个小名,以后这个小名和他大名是等价的
import numpy as np
a = np.array([1])
print(a)
String Formatting
字符串格式化,.format(x,y)
是将 x 插入到字符串的{0}
处,y插入到{1}
位置处
year = int(input("Enter your birth year: "))
age = 2017 - year
fancy_string = "Hi {0}, you are {1} years old".format(name, age)
print(fancy_string)
还有种用法是将一个字符串插入到一个有字符串格式符 %s 的字符串中,
%d 格式化整数
%f 格式化浮点数字,可指定小数点后的精度
print "My name is %s and weight is %d kg!" % ('Ming', 21)
Jupyter notebook 快捷键
-
mac/win
Tab 代码补全或缩进 Ctrl(command)-UP 跳到单元开头 Command-A 全选 Ctrl-Down 跳到单元末尾 Command-Z 撤销 Ctrl-Left 跳到左边一个字首 Ctrl-Enter 运行本单元 Ctrl-Right 跳到右边一个字首 Ctrl-S 文件存盘 Ctrl-Backspace 删除前面一个字 Shift-Tab 提示 Ctrl-Delete 删除后面一个字 ESC-F 查找和替换 Shift + M 合并cell
Challenges Week1
Nice to meet you!
Write a program that reads in a user's name and prints out 'Hello <
input()
和print()
输入输出函数
转义字符
-
name = input('Enter your name: ') print('Hello ', name,'.' , '\n' ,'Nice to meet you!',sep = '')
print() 函数默认用一个空格来间隔多个对象,这里
sep = ''
使打印时不加空格在需要在字符中使用特殊字符时,用反斜杠
\
转义字符在行尾时 续行符 \ 反斜杠符号 \' 单引号 \" 双引号 \n 换行 \b 退格(Backspace)
Double that number!
Write a program that reads in an integer from the user, doubles it, and prints the result.
处理输入字符串
input
函数输出的是字符串,如果想对输入的数字进行操作,需要用int()
函数用于将一个字符串转换为整型。float()
函数转换成浮点数(有小数点的数)
num = input('Enter a number: ')
print( int(num) * 2 )
Convert from USD to AUD
Write a program to convert USD (US dollars) to AUD (Australian dollars). The program should read in a conversion rate first, then the number of USD. It should then convert the USD to AUD and print the result.
print()
特殊字符转义,input
输入结果处理成浮点数
rate = input('What\'s the conversion rate? ')
rate = float(rate)
usd = float( input('How many USD do you have? '))
aud = usd * rate
print('That\'s', aud, 'AUD!' )
Positive or negative
输入一个数,根据这个数的正负性,输出不同的字符串
条件判断
注意Python的缩进规则
如果if
语句判断是True
,就执行缩进的语句,否则,不执行
也可以给if
添加一个else
语句,意思是,如果if
判断是False
,不要执行if
的内容,去把else
执行了:
elif
是else if
的缩写,完全可以有多个elif
,所以if
语句的完整形式就是:
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
else if
语句的逻辑图
注意条件判别式后不要少写了冒号:
。
条件判别式里 相等 是==
而不是 =
,否则程序结果会出错,但不会报语法错误
elif
是 else if
的缩写
num = int( input('Enter a number: ') )
if num > 0 :
print ( num, 'is', 'positive.')
elif num < 0 :
print ( num, 'is', 'negative.')
else :
print ( 'It is', '0!')
Odd or Even
Write a program that asks the user for an integer and then displays whether the number is odd or even.
取余运算
num = int(input('Enter a number: '))
if num % 2 == 1:
parity = 'odd'
else:
parity = 'even'
print('The number ',num,' is ',parity,'.', sep = '')
What to buy
Write a program that loops through a shopping list and tells the user what they need to buy.
循环运算
之前三段代码是文本读取操作,现在课程里还没做要求
import sys
with open(sys.argv[1], 'r') as f:
shopping_list = f.read().splitlines()
首先确定,循环次数与shopping_list
里的元素个数相等
想获取 list 变量有多少元素,用len()
函数
用range(x)
函数生成 0 到 X 的整数序列
for i in range(len(shopping_list)) :
print('You need to buy', shopping_list[i])
What is the password?
提示输入密码,如果密码不在密码本上,提示密码错误并提示继续输入密码。如果密码正确,提示“欢迎回家”
while
循环
psd = input('Enter password: ')
while not psd in passwords:
print('Not a valid password.')
psd = input('Enter password: ')
print('Welcome back!')
Count
Write a program that reads in an integer, and counts from 0 up to, or down to, that integer.
条件语句和循环语句的嵌套
range(x)
生成的是[0,1,2,3,...,x-1]的列表
num = int( input('Enter a number: '))
if num > 0:
for x in range( num + 1):
print(x)
elif num < 0:
for x in range ( -1 * (num-1) ):
print( x * -1)
else:
print ( 0 )
Task1 Dice roll
提示是否摇色子,如果是 y,随机显示1到6中间的一个整数,并继续提示是否摇色子;如果是n,程序结束.
这题和What is the password? 是一样的 while
循环语句
random
库用来进行随机数相关的运算
加入别的库文件用import xxx
命令
import random
psg = input('Roll the dice again? (y/n) ')
while psg == 'y':
rand_num = random.randint(1, 6)
print(rand_num)
psg = input('Roll the dice again? (y/n) ')