用python玩转数据|基本语法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/darlingwood2013/article/details/60868362

比较运算符

>>> 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('命题为真!')

没有更多推荐了,返回首页