比较运算符
>>> 3<4<7
True
>>> 3<4<1
False
>>>
打开文件
>>> f=open('c:\python\test.py','w')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 22] Invalid argument: 'c:\\python\test.py'
>>> f=open(r'c:\python\test.py','w')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'c:\\python\\test.py'
>>> f=open('c:\\python\\test.py','w')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'c:\\python\\test.py'
模块:一个完整的python文件即是一个模块
>>>import ModuleName #引入一个模块
>>>import ModuleName1,ModuleName2 #引入多个模块
>>>from Module1 import ModuleElement #引入特定模块的特定模块属性
包:一个有层次的文件目录结构
>>>import AAA.CCC.c1
>>>AAA.CCC.c1.func1(123)
>>>from AAA.CCC.c1 import func1
>>>func1(123)
库:一组具有相关功能的模块的集合
题目1:接收键盘输入姓、名,然后分解输出
#python3中已经不支持raw_input()了,直接用input()就可以了
surname = input("Input your surname:");
firstname = input("Input your firstname:");
print("Your surname is:");
print(surname);
print("Your firstname is:");
print(firstname);
print("Your fullname is:");
#打印的时候多个变量用逗号隔开就可以
#但print(surname+firstname)不行
#可以这样fullname=surname+firstname;print(fullname)
print(surname,firstname);
输出:
第一单元小测验
以下哪个语句不可以打印出“hello world”字符串(结果需要在同一行)?
A print 'hello world'
B print "hello world"
C print 'hello \
world'
D print '''hello
world'''
应该选择D,错选为C
测试结果如下:
说明:“\”是续行符;三引号可以原样输出字符串。
条件语句:
#猜数字游戏
#只有一次机会
from random import randint
x=randint(0,300)
print('Please input a number between 0~300:')
#此处如果不把input()类型由str()转换为int(),则后面会报错
digit=int(input())
if digit==x:
print('Bingo!')
elif digit<x:
print('Too small!And try again!')
elif digit>x:
print('Too big!And try again!')
else:
print('Invalid number!')
range()
#在python3中不支持xrange(),只支持range()
#并且range()返回的range对象,必需显式调用才能打印下来
list(range(3, 100, 5))
Out[29]: [3, 8, 13, 18, 23, 28, 33, 38, 43, 48, 53, 58, 63, 68, 73, 78, 83, 88, 93, 98]
for i in range(3, 10):
print(i)
输出:
3
4
5
6
7
8
9
循环语句:
#猜数字游戏
#可以猜五次
from random import randint
x=randint(0,300)
for count in range(0,5):
print('Please input a number between 0~300:')
digit=int(input())
if digit==x:
print('Bingo!')
elif digit<x:
print('Too small!And try again!')
elif digit>x:
print('Too big!And try again!')
else:
print('Invalid number!')
#猜数字游戏
#可以一直猜,直到猜中为止
from random import randint
x=randint(0,300)
while True:
print('Please input a number between 0~300:')
digit=int(input())
if digit==x:
print('Bingo!')
break
elif digit<x:
print('Too small!And try again!')
elif digit>x:
print('Too big!And try again!')
else:
print('Invalid number!')
#猜数字游戏
#玩家可以自己决定玩多少次
from random import randint
x=randint(0,300)
go='y'
while (go=='y'):
print('Please input a number between 0~300:')
digit=int(input())
if digit==x:
print('Bingo!')
break
elif digit<x:
print('Too small!And try again!')
elif digit>x:
print('Too big!And try again!')
else:
print('Invalid number!')
print('Do you want to continue?input y or n')
go=input()
else:
print('goodbye!')
sumA=0
i=1
while True:
sumA+=i
i+=1
if sumA>10:
break
#注意此处的写法
print('i=%d ,sum=%d'%(i,sumA))
#输出2-100之间的素数
from math import sqrt
j=2
while j<100:
i=2;
k=sqrt(j)
while(i<=k):
if j%i==0:
break;
i+=1;
if i>k:
print(j)
j+=1
#输出2-100之间的素数
from math import sqrt
for j in range(2,101):
#此处一定要将sqrt(j)转变为int类型,否则不能用在range里
k=int(sqrt(j))
flag=0
for i in range(2,k+1):
if j%i==0:
flag=1
break
if flag==0:
print(j)
#对于循环中的else
#如果循环代码从break处终止,则跳出循环
>>> k=5
>>> for i in range(1,10):
... if k==5:
... break
... else:
... print(i)
...
>>>
#正常结束循环,则执行else中代码
>>> k=5
>>> for i in range(1,10):
... if k==3:
... break
... else:
... print(i)
...
9
>>>
自定义函数:
from math import sqrt
def isprime(x):
if x==1:
return False
k=int(sqrt(x))
for j in range (2,k+1):
if x%j==0:
return False
return True
#用if __name__=="__main__"判断是否是直接运行该.py文件
#如果是直接运行该.py文件,则其__name__=="__main__"
#如果是import进来的,那么__name__是其模块名
if __name__=="__main__":
for i in range(2,101):
if isprime(i):
print(i)
带默认参数的自定义函数:
默认参数一般需要放在参数列表最后。
调用函数时
>>> def f(x=True):
... "whether x is a correct word or not"
... if x:
... print('x is a correct word')
... print('OK')
...
>>> f()
x is a correct word
OK
>>> f(False)
OK
>>>
函数可以像参数一样传递给另外一个函数:
def addMe2Me(x):
return(x+x)
def self(f,y):
print(f(y))
self(addMe2Me,2.2)
输出:4.4
匿名函数:
递归:
递归是层层调用,然后层层返回;
递归的执行效率比较低,比循环低;
用递归方式书写的程序简单易懂。
#汉诺塔问题,还是没怎么搞懂哦!
def hanoi(a,b,c,n):
print('hanoi(%s,%s,%s,%d)'%(a,b,c,n))
if n==1:
print(a,'->',c)
else:
hanoi(a,c,b,n-1)
print(a,'->',c)
hanoi(b,a,c,n-1)
hanoi('a','b','c',4)
#第二单元练习2
def show(lstr):
print(''.join(lstr))
def shift(lst):
_ = lst.pop(0)
lst.append(_)
return lst
for i in range(100,1000):
if i%37==0:
#show(list(str(i)))
i1=shift(list(str(i)))
#show(i1)
i2=shift(i1)
#show(i2)
int_i1=int(i1[2])*100+int(i1[0])*10+int(i1[1])
int_i2=int(i2[2])*100+int(i2[0])*10+int(i2[1])
#print(int_i1)
if int_i1%37!=0 or int_i2%37!=0:
print('%d和%d中有一个不能被37整除'%(int_i1,int_i2))
break
else:
print('命题为真!')