【Note】Python入门基础

此文作为Python基础的第一个笔记是对Python基础语法的一个总括,比较基础,基本所有Python教材的开篇都是讲的这些内容,下面的代码示例都是在Python 2.7环境下的ipython notebook中执行的。文末附带9个本文相关知识点的练习题和参考实现代码,其中具体问题如字符串列表函数*等都将在后续的Python笔记中续更。

基础语法规则

# 单行注释
print('单行注释') # 这是单行注释的标识

# \ 代码分隔
print('A fast, distributed, high performance gradient boosting (GBDT, GBRT, GBM or MART) \
framework based on decision tree algorithms, used for ranking, classification and many other \
machine learning tasks. It is under the umbrella of the DMTK(http://github.com/microsoft/dmtk) \
project of Microsoft.')

# \n 文本分隔符
print('A fast, distributed, high performance gradient boosting (GBDT, GBRT, GBM or MART) \n framework based on decision tree algorithms')

#''' 多行文本赋值
multiline = '''
我就是热爱
机器学习
和
数据科学
'''
print(multiline)

#; 多行语句写在一起
myname = 'Mars Xu';wfname='MM Xiao'

# 缩进
title = 'Python'
if title=='Python':
    print('人生苦短,我用',title)
else:
    print('我用',title)

#: 分隔代码块
def foo(instr):
    print(instr)
class c1():
    pass
foo('mars xu')

# 空行,pass关键字,为了让程序看起来更加的完整而存在
def foo():
    pass

# 模块, import 模块
import random

标识符命名

# 不能用数字和特殊字符开头作为变量名

1i = 'hello' # 错误的

# 驼峰命名法
companyName='MachineLearning'

BIFs自带电池

即Python自带的一些常用函数:

  • 查看:dir(builtins)
  • IO:print(),open(),input()
  • 列表和帮助:dir(),help()
  • 类型与身份:type(),id(),memoryview(),isinstance(),issubclass()
  • 数学运算类:sum,pow,round,min,max,hash等
  • 类型转换:int,bin,hex,oct,str,float,list,bytes等
  • 序列:len(),range(),zip(),map(),reduce(),filter(),reversed(),sorted(),enumerate()

Python的标准运算符

# 算数运算符
print('>>>>>>算数运算符')
a=50;b=100

print('a+b=',a+b)
print('a-b=',a-b)
print('a*b=',a*b)
print('a/b=',a/b)
print('a%b=',a%b)
print('a//b=',a//b)  # 取整数
print('a**2=',a**2)  # 取幂
print('a**0.5=',a**0.5) # 取根

# 比较运算符
print('>>>>>>比较运算符')
print('a==b',a==b)
print('a!=b',a!=b)
print('a>b',a>b)
print('a<b',a<b)

# 逻辑运算符
print('>>>>>>逻辑运算符')
if a>50 and b>60:
    print('a and b both bigger than 50')
if a>=50 or b>200:
    print('bb')

# 成员运算符
print('>>>>>>成员运算符')
we='marsxu and miaomiao xiao'
print('mars' in we)
print('others' not in we)

# 身份运算符
print('>>>>>>身份运算符')
we='mars'
we1='mars'
print('we1 is we2: ', we in we1)

循环与判断

  • for迭代循环
  • while条件循环
    • 条件循环
    • 死循环
  • 循环控制
    • break
    • continue
    • pass
# for迭代循环
# range遵循左闭右开的原则-[)
for i in range(5):
    print(i)

# while条件循环
i=0
while(i < 15): # 终止条件
    print(i)
    i += 1 # 注释掉这句之后此while循环就变成一个死循环

# break 终止循环
i=0
while True:
    print(i)
    i += 1
    if i==7: break

# continue 跳过本次循环
for i in range(5):
    if i==2: continue
    print(i)

# pass 填行,为了使语法看起来更可读,更有条理,其本身没有任何意义
for i in range(5):
    if i==2:
        pass
    ##############
    else:
        print(i)

判断

age=28
# 单 if
if age > 18:
    print('you are a adult!')

# if else
if age > 18:
    print('you are a adult!')
else:
    print('you are a teenage!')

# if elif
l1 = list('china')
print(l1)
for item in l1:
    if item=='a':print('-aaa-')
    elif item=='i':print('iiii')
    elif item=='h':print('>>h')
    else:
        print(item)

# 三元表达符
# 语法:为真时的结果 if 判定条件 else 为假时的结果
we='mars and mm'
'we' if 'mm' in we else 'not we'

Python标准数据类型

  • 不可变类型
    • 数值 Number
      • int 整型
      • float 浮点
      • complex 复数
    • 字符串 String
  • 容器类型(可变类型)
    • 列表 List
    • 元组 Tuple
# 整数类型
a=100;b=200

# 进制表示与转化,Py3不支持加L表示长整型
a=0b0101 # 二进制,bin()
b=0o0101 # 八进制,oct()
c=0x0101 # 十六进制,hex()

# 浮点型
a=5.117
# 科学计数法,-表示小数点往前移
c=5e3
d=7e-4

# 数字正负无穷
float("inf") #正无穷
float("-inf") #负无穷
print(float("-inf")==float("inf"))

# 复数
a=5+22j #定义复数对象
print(type(a))
print(a.real,a.imag)

# 数值类型转换
a=-5.555
print(int(a))
print(float(a))
print(complex(a))

# 绝对值与四舍五入
print(abs(a)) 
print(round(a,1)) # 第二位表示保留的小数位数

Pyhon 字符串类型

## 初始化及转义

# 单引号或双引号
we='mars & miao'
print(we)

# 转义: \
sentence = 'Today\'s news is not a good news'
print(sentence)

# 字符串属性
len(we) #长度

# 访问
# 1. 循环
for item in we:
    print(item)
# 2. 索引, 0 表示第一个元素,-1 表示最后一个元素
print(we[0],we[-1])
# 3. 切片, [::]
print(we[0:4])
print(we[0::2])
# 4. 格式化访问
we='mars & m{}'
m='iao'
we.format(m)

# 拼接
we='maio & '+'mars'
we*3

# 查找与替换 ,返回索引值
we.find('mars')
we.replace('&','2')

# 统计
we.count('m')

# 大小写
we.title()
we.upper()
we.lower()

# 编码与解码
ec = we.encode()

练习题

1、打印出从1到100中所有能被3整除,又能被5整除的数有哪些

for item in range(1,101):
    if item%3==0 and item%5==0:
        print(item)

2、输入一个字符串,返回满足以下条件的字符串:

  • 如果字符串长度大于等于3,添加’ing’到字符串末尾
  • 如果字符串是以’ing’结尾的,就在末尾添加’ly’
  • 如果字符串长度小于3,返回元字符串
s=input()
if len(s)>3:
    print(s+'ing')
elif len(s)<3:
    print(s)
else:
    print(s+'ly')

3、判断回文

  • 输入一个数字,如果是回文数字,返回True,否则返回False
  • 回文:如ABBA,正着和反着相等
# 方法1:取字符串逆序 :x[::-1]
x=input()
str_x=str(x)
inverse_x=str_x[::-1]
print(inverse_x==str_x)

# 方法2:for循环 & if...else...
x=str(input())
flag = []
for i in range(len(x)/2):
    flag.append(x[i]==x[len(x)-i-1])
print False if False in flag else True

4、输入一个字符串,返回满足以下条件字符串

  • 找到字符串中的子串’not’和’bad’
  • 如果’bad’出现在’not’后面,就把’not’…’bad’之间包含的所有字符串替换成’good’
# find() & index() & replace()
# 此题有点歧义,题中没有说明若出现多个not和bad时需如何处理
x=raw_input()
not_idx=x.find('not')
bad_idx=x.find('bad')
if not_idx!=-1 and bad_idx!=-1 and not_idx<bad_idx:
    print(x.replace(x[not_idx+3:bad_idx],'good'))

5、输入一个字符串,把字符串拆分成两个等分

  • 如果字符串长度是偶数,前一半和后一半的长度是相同的
  • 如果字符串长度是奇数,则多出的一个字符加到前一半,如’abcde’,前一半是’abc’,后一半是’de’
x=raw_input()
if len(x)%2==0:
    a,b=x[0:len(x)/2],x[len(x)/2:]
else:
    a,b=x[0:len(x)/2+1],x[len(x)/2+1:]
print('a=',a)
print('b=',b)

6、输入一个字符串返回满足以下条件的字符串

  • 找出与字符串的第一个字母相同的字母,把他们替换成’*’,除了第一个字母本身以外
  • 例如:输入’babble’,返回’ba**le’
x=raw_input()
first = x[0]
print(first+x[1:].replace(first,'*'))

7、输入一个字符串,返回满足以下条件的字符串

  • 由字符串的最前面两个字母和最后两个字母组成的字符串
  • 例如: ‘spring’ 返回 ‘spng’, ‘is’ 返回 ‘is’
  • 当输入的字符串长度小于2时,返回空字符串
x=raw_input()
if len(x)<2:
    res=''
elif len(x)==2:
    res=x[0:2]
else:
    res=x[0:2]+x[-2:]
print(res)

8、落球计算

一球从100米高度自由落下,假设每次落地后反跳回原高度的一半;再落下,再弹起。请问第6次落地后会弹起多少米?(分别用for和while实现)

h=100
# for循环
for i in range(6):
    h=h/2
    print(h)
print(h)

# while
h=100
i=0
while(i<6):
    h=h/2
    i+=1
print(h)

9、创建一个python文件,接收两个参数(均为数字),并找出两个数字间所有的素数(即只能被1和自己整除的数)

x=input()
y=input()
prime=[]
if x<1 or y<1:
    print "input number must be > 1"
x,y = [x,y] if x<y else [y,x]

def is_prime(num):
    res=True
    for x in range(2,num-1):
        if num%x==0:
            print(num)
            res=False
        return res
    return res
print ([i for i in range(x+1,y) if is_prime(i) and i!=1])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值