python完全靠缩进表达代码逻辑
顶层代码必须顶头写,不能有任何空格
某个代码的子代码,必须有缩进,缩进多少都可以,最好是4个空格
#!/root/nsd1905/bin/python
print('hello word')
#执行后提示缩进错误
print('helllo word')
^
IndentationError: unexpected indent
Process finished with exit code 1
缩进相同的一组预计构成一个代码块,关键字开始,以:结束
if 3 > 0:
print('yes')
print('ok')
ctrl+?快速注释多行
print语句
print('hello'+'word') #字符串拼接
print('sdf',123,sep='++++') #输出各项之间,使用指定分隔符连接
input语句
uname = input('username:') #输入内容赋值给变量再输出,输入的数据都是字符类型的
print(uname)
----------------------------------------
>>> a = imput('number:')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'imput' is not defined
>>> a = input('number:')
number:10
>>> a+5
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: must be str, not int
>>> a+str(5) #str将数据转成字符
'105'
>>> int(a)+5 #int用于将数据转成整数
15
变量
命名规则:
首字母必须是字母,下划线
其他字符,可以是字母/数字/下划线
区分大小写,类名采用驼峰形式
运算符
数学运算符
>>> a=10
>>> a
10
>>> a=a+1
>>> a
11
>>> a += 1
>>> a
12
>>> a -= a
>>> a
0
>>> a *= 2
>>> a
0
>>> 10 // 2 #只保留商
5
>>> 5 % 3 #求模,返回余数
2
>>> divmod(5,3) #同时得到商和余数
(1, 2)
>>> 2 ** 3 #幂运算
8
逻辑运算符,比较运算符
>>> 10 < 15 and 20 >10 #and两边的结果全为真,最终才为真
True
>>> 10 > 15 and 20 >10
False
>>> not 20 > 10 #not取反
False
>>> 10 > 15 or 20 >10 #or两边的结果全为假,最终才为假
True
>>> 10 > 15 or 20 <10
False
判断语句
import getpass #导入getpass模块
usname = input('usname:')
pwd = getpass.getpass('password:') #调用getpass函数
if usname == 'aa' and pwd == '123456':
print('登录成功')
else:
print('登录失败')
多分支
fenshu = int(input('请输入你的分数:'))
if 60 <= fenshu <70:
print('及格')
elif 70 <= fenshu <80:
print('良')
elif 80 <= fenshu <90:
print('好')
elif fenshu >= 90:
print('优')
else:
print('你要努力啦!!')
循环
当循环次数不确定时,使用while
当循环次数可预知,使用for
while循环
import random
num = random.randint(1,100)
while 1 :
answer = int(input('guess:'))
if answer > num:
print('猜大了')
elif answer < num :
print('猜小啦')
else:
print('猜对啦')
break #用于中断循环,后面代码不再执行
print(num)
continue
#1-100的偶数和
result = 0
connet = 0
while connet< 100:
connet += 1
if connet % 2: #connet % 2的结果只有1或0,1为真,0为假,为真时执行continue跳出循环
continue
else:
result += connet
print(result)
Random
#随机生一个整数int类型,可以指定这个整数的范围,同样有上限和下限值
random.randint()
num = random.randint(1,100)
#可以从任何序列,比如list列表中,选取一个随机的元素返回,可以用于字符串、列表、元组等
random.choice()
foo = ['a', 'b', 'c', 'd', 'e']
print random.choice(foo)
#其它模块
random.random() #产生0-1的随机浮点数
random.uniform(a, b) #产生指定范围内的随机浮点数
random.randrange([start], stop[, step]) #从一个指定步长的集合中产生随机数
random.shuffle(x[, random]) #将一个列表中的元素打乱
for循环
#列表实现斐波那锲数列
fib = [0,1]
n = int(input('长度:'))
for i in range(n -2):
fib.append(fib[-1]+fib[-2]) ##append()追加,插入 fib[-1]表示倒数第一,以此类推
print(fib)
内嵌for循环
#九九乘法表
for i in range(1,10):
for j in range(1,i + 1):
print('%s*%s=%s'%(j,i,i*j),end = ' ')
print()
位置参数
import sys
print(sys.argv)
(nsd1905) [root@localhost day03]# python weizhi.py
['weizhi.py']
(nsd1905) [root@localhost day03]# python weizhi.py hao 123
['weizhi.py', 'hao', '123']
模块及导入模块
# vim star.py ##编写帮助信息
'''
p is star ##描述内容
this a moudle
'''
hi = 'hello word' #全局变量
def pstar(n=30): #函数
'sdf af'
print('*' * n)
>>> import star #导入模块
>>> star.hi #调用star里的变量
'hello word'
>>> star.pstar() #调用star里的函数
******************************
>>> help(star) ## 查看模块的帮助信息
Help on module star:
NAME
star
DESCRIPTION
p is star
this a moudle
FUNCTIONS
pstar(n=30)
sdf af
DATA
hi = 'hello word'
FILE
模块的导入和加载
import是导入模块
第一次导入模块时,模块中的代码会执行一遍,这个叫加载,即load
无论导入多少次,只会加载一次
模块导入的特性
每个模块都有一个名为__name__的变量 ##双下划线__name__
__name__它的值,可能是__main__,也可能是模块名
当程序文件作为脚本,直接运行时,值为__main__
当程序文件作为模块,被导入时,值为模块名
[root@localhost day03]# cat bar.py
import ff
[root@localhost day03]# cat ff.py
print(__name__)
[root@localhost day03]# python bar.py
ff
[root@localhost day03]# python ff.py
__main__