BUSS6002 Python 基础语法

BUSS6002 Python 基础语法

print

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 的末尾里加入元素 x

    list.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
    

    流程图

if.png
  • 通过索引遍历

想获取 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, '是一个质数'
    
loop_architecture.jpg
  • while 循环

    执行语句可以是单个语句或语句块。判断条件为真时执行下面的语句块。当判断条件假false时,循环结束

    count = 0
    while (count < 9):
       print ('The count is:', count)
       count +=  1
    
    print ("Good bye!")
    

    流程图

    python_while_loop.jpg

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 <<name>>. Nice to meet you!'

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执行了:

elifelse if的缩写,完全可以有多个elif,所以if语句的完整形式就是:

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>
1-14050G33353Z5.png

else if语句的逻辑图

注意条件判别式后不要少写了冒号:

条件判别式里 相等 是== 而不是 = ,否则程序结果会出错,但不会报语法错误

elifelse 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) ')
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容