实用Python语法实战编程练习

前言:本文主要罗列了Python常见语法,并对其实现方法进行说明,加以代码辅助,可以快速理解相关语法的学习。

# -*- coding: utf-8 -*-
"""
Created on Sat Nov 21 15:35:56 2020

@author: Administrator
"""




# 数据类型与运算符
import math

print(math.factorial(32))  #计算32的阶乘
print(0.4-0.3==0.1) #实数一般不进行比大小
print(math.isclose(0.4-0.3,0.1)) # 测试两个实数是否足够接近
c=3+4j #python内置支持复数及其运算
print(c+c)
print(c.real)       #查看复数的实部
print(3+4j.imag)    #相当于3+(4j).imag

#字符串
a="Hello"
b="Python"

print('a+b输出:',a+b)
print("a[1:4]输出结果:",a[1:4])  

def toTextFile(fn):
    with open(fn,'w') as fp:
        for i in range(10):
            if i%3==0 or i%7==0:
                fp.write(str(i)+'\n')
        fp.write('finished\n')
        print('all job done')

toTextFile('text.txt')


"""
Spyder Editor
Thsi is  temporary script file
"""
#import sys
#import os.path
#dir=os.path.dirname(sys.executable)
#with open(dir,encoding='utf-8') as fp:
#    content=fp.readlines()
#    
#print(len(content))



from math import pi as PI
from os.path import getsize
from random import choice

r=3
print(round(PI*r*r,2))  #计算半径为3的圆面积
# 计算文件大小,单位为字节
print(getsize(r'D:\Test_ProgramSrc\11周\text.txt'))
# 从字符串中随机选择一个字符
print(choice('python'))


#import all not recommonded
from itertools import *
characters ='1234'
#从4个字符中任选3个的组合
for item in combinations(characters,3):
    print(item,end=' ')  #end=‘  ’ 表示输出后不换行
     
print('\n'+'='*20)   #行号后输出20个等于号
for item in permutations(characters,3):   #从4个字符中任选3个的排列
    print(item,end=' ')
    
    
    
    
#  import  as
import math 
import random 
import posixpath as path

print(math.sqrt(16))  #计算并输出16的平方根
print(math.cos(math.pi/4))  #计算余弦值
print(random.choices('abcd',k=8)) #从字符串'abcd'中随机选择8个字符。

print(path.isfile(r'D:\Test_ProgramSrc\11周\text.txt'))
#测试指定路径是否为文件


import os
print(os.getcwd()) #返回当前工作目录
#os.chdir() 
os.system('dir') #执行系统命令
print(os.getcwd())  #返回当前工作命令



#
import random 
fruits=random.choice(['apple','pear','banana'])
x=random.sample(range(100),10) #sampling without replacement
y=random.random()  #random float 
z=random.randrange(6) #random integer chosen from range(6)
print(fruits)
print(x)
print(y)
print(z)


#string
text="""
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
"""
print(text)
print(len(text)) #字符串长度
print(text.count('is')) #字符串中单词is出现的次数
print('Beautiful' in text) #测试字符串中是否包含'Beautiful'
print('='*28)  #字符串重复
print('Good'+'Morning')  #字符串连接




#list tuple dict set
#创建列表对象
x_list=[1,2,3]
#创建元祖对象
x_tuple=(1,2,3)
#创建字典对象,元素形式为   
x_dict={'a':97,'b':98,'c':99}
#创建集合对象
x_set={1,2,3}
#使用下标访问列表中指定位置的元素,元素下标从0开始
print(x_list[1])

print(x_tuple[1])
# 访问字典中特定键值对应的值,字典对象的下标是键
print(x_dict['a'])
#查看列表长度,其中元素的个数
print(len(x_list))
#查看元素2在元组中首次出现的位置
print(x_tuple.index(2))
#查看字典中哪些键值对应的值为98,
for key,value in  x_dict.items():
    if value==98:
        print(key)
#查看集合中元素的最大值
print(max(x_set))

# 字符串的重载
print([1,2]+[3,4])
print('\n')
num=3
print(-num)
print({3,4,5}-{1,2,3})

#表示元组与字符串之间重复、生成新的对象
print(333*555)
print("重要的事情说三遍"*3)
print([0]*6)

#  %
print(365%7) #求余数

#字符串的格式化
#在计算余数是,结果与右侧%的运算符符号一致。
print('%c,%c,%c,'%(65,97,48))  #把右侧数字格式化为字符


# 5
print(3+2<7+8) #关系运算符优先级低于算术运算符
print(3<5>2) #等价于3<5     and    5>2
print(3==3<5)  #等价于3 == 3and 3<5

print([85,92,73,84]<[91,82,73])  #第一个数字85<91,直接得出结论
print({1,2,3,4}<={3,4,5}) #第一个集合不是第二个集合的子集

# 6 逻辑运算符
print(3 in range(5) and 'abc' in 'abcdfeg')
print(3-3 or 5-2)
print(not[])
print(2 and 3)

# is or not
a=20
b=20
if(a is b):
    print('1 :a and b is 相同标识')
    
#修改b的值
b=30
if(a is b):
    print('3:a and b 相同标识')
    
#is 与  ==   的区别
a=[1,2,3]
b=[1,2,3]
print(b==a)   #输出
print(b is a)



# 8 operation
a=20
b=10
c=15
d=5
e=0

e=(a+b)*c/d
print(e)
e=a+(b*c)/d
print(e)

#  append_insert
print('#'*30)
list1=[1,2,3,4]
list1.append(5)
list1.insert(0,0)
list1.insert(2,1.5)
list1.extend([6,7])
print(list1)

#  cut 切片
data=list(range(20))
print(data[:])  #获取所有元素的副本
print(data[:3])  #前三个元素
print(data[3:])  #下标3之后的所有元素
print(data[::3])  #每三个元素选取一个
print(data[-3:])  #最后3个元素
print(data[:-5])  #除最后5个元素之外的所有元素


# count _ index 
lst=[1,2,3,4,5,6,7,8,9]
print(lst.count(2)) #输出2 
print(lst.index(4))  # 输出6
# print(lst.index(15)) # 代码抛出异常, is not in list

# pop remove
print('#'*30)
lst=[1,2,3,4,5,6]
print(lst.pop())  #删除并返回最后一个元素
print(lst)

print(lst.pop(0))  # 删除并返回下标为0的元素,后面的元素向前移动
print(lst)

lst=[1,2,3,4,5,6]
lst.remove(2)  # 删除第一个2,该方法没有返回值
print(lst)

# sort
print('#'*30)
from random import sample

#在range(10000)中任选10个不重复的随机数
data=sample(range(10000),10) 
print(data)
data.reverse() #翻转,首尾交换,
print(data)

data.sort() #按元素大小进行排序,
print(data)

data.sort(key=str)  # 按所有元素转换为字符串后的大小进行排序
print(data)

# 元组生成器表达式
gen=(2**i for i in range(8)) #创建生成器对象
print(gen) 
print(list(gen))  #转换为列表,用完生成器中的所有元素
print(tuple(gen))  #转换为元组,得到空元组

gen=(2**i for i  in range(8))  #重新创建生成器对象 
print(next(gen))  # 使用next()函数访问下一个元素
for item in gen:      #使用for循环访问剩余的所有元素
    print(item,end=' ')
    

#  dict item
print('#'*30)
data=dict(name='zhangsan',age='18',sex='M')
print(data['name'])  #使用‘键’作为下标,访问‘值’
print(data.get('age'))
print(data.get('address','不存在这个键')) #‘键’不存在,返回默认值
print(list(data.values())) #所有‘键’转换为列表
print(list(data.items())) # 所有元素转换为列表
for key,value in data.items():   # 遍历字典中的‘键,值’元素
    print(key,value,sep='\t')
    
# 字典元素操作
sock={'IP':'127.0.0.1','port':'80'}
sock['port']=8080   #修改已有元素的值
sock['protocol']='TCP'  #增加新元素
print(sock)

sock.update({'IP':'192.168.9.62','protocol':'TCP'})  #更新
print(sock)

print(sock.pop('IP')) #删除并返回指定‘键’的元素


#  set operation
print('#'*30)
data={30,40,50}
data.add(20) #增加新元素20
print(data)

data.update({40,60})  #忽略40,新增60

data.remove(30)  #删除30
data.discard(30) # 集合中没有30,忽略本次操作

print(data.pop())  #删除并返回集合中的一个元素


# string  operation 
#
str1='hello world'
for p in str1:
    print(p)
print('hello\nworld\ngoodbye\t32\n')

#
text='处处飞花飞处处;声声笑语笑声声。'
print(text.index('处'))
print(text.count('处'))

text="Python是一门非常棒的编程语言"
# relace() 方法返回替换后的新字符串,可以直接再次调用replace()方法
print(text.replace('棒','优雅').replace('编程','程序设计'))
print(text)

# 创建字符映射的转换表

table=''.maketrans('0123456789','零一二三四五六七八九')
print(table)
#translate(str) 根据str 给出的映射表,转换string字符
print('Tel:123465335343'.translate(table))

# 返回原字符对齐后的格式 

print('居中'.rjust(20,'#'))
print('居左'.rjust(20)+'结束')
print('j居右'.center(20,'='))

text='Beautiful is better than ugly'
print(text.split())  # 使用空白字符进行分隔
 
print('1,2,3,4'.split(',')) #使用逗号作为分隔符

print(','.join(['1','2','3','4'])) # 使用逗号作为连接符
print(''.join(map(str,range(1,5)))) #直接连接,不插入任何字符


text="Simple is better than complex"
print(text.lower()) #小写
print(text.upper()) #大写
print(text.capitalize())

print(text.title())
print(text.swapcase())

text= '==============text########################'
print(text.strip())  #删除两侧的空白字符
print(text.strip('=# '))  #删除两侧的 = # 和空格
                 

                 
#single_choice_name
from random import choice,random
name=choice('赵钱孙李')
condition=random()
if condition>0.5:
    name+=choice('王孙自可留')

name+=choice('宝塔镇河妖')
print(condition)
print(name)


# two choice



#more choice

#for average    
 #      输入N个数,求平均数
n=eval(input("How many number?"))
print(n)
sum=0.0
for i in range(n):
    x=eval(input("Enter a number>>"))
    sum+=x
print(sum/n) #sum除以n


#while 
a=1
while a<8:
    if a<=4:
        print(a)
    else:
        print('hello world')
    a+=1
    
else:
    print('text')
    
    
# for break
for letter in 'Runoob':
    if letter =='b':
        break
    print('当前字母为:',letter)
    
var=10
while var>0:
    var=var-1
    if var== 5:
        break
    
print('Good bye')



#   For-Continue
# 编写程序,实现各位数字都不相同的三位数字
digits =range(10)
for i in digits:
    if i==0:
        continue
    for j in digits:
        if j==i:
            continue
        for k in digits:
            if k in (i,j):
                continue
            print(int(str(i)+str(j)+str(k)),end=' ')
            
            
#  使用列表函数发转字符串
def reverseStr(s):
    ls=list(s)
    ls.reverse()
    s=''.join(ls)
    print(s)
    
str="sfsddsggdsb3454gdfy546"
reverseStr(str)

#  切片,反转字符串
def reverseStrCut(s):
    return s[::-1]

str="sfdsdsdsfdsf353gdb"
reverseStrCut(str)

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaosanxian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值