1 问题

最近有两个高中同学断断续续问我一些python题目。本文为初学者介绍一些Python基础知识,包括输入,输出,有序,无序序列的相关操作,函数的使用等,并出示相关的例题方便更好的理解。

2 方法

这里直接展示代码,注释部分对相关代码进行解释。

代码清单 1

# 1.拆分数据输入
#使用map()与split()将输入数据进行拆分,这两组合会自动忽略空格
a,b,c=map(int,input().split())
value=b*2-4*a*c
print(value)
#1.1 break与continue
str="Hello World"
s=''
for i in str:
s+=i
if i=="W":
break # 执行if语句后,跳出整个循环
print(s)
for i in range(10):
if i==8:
continue # 执行if语句后,跳出此次循环,接着下一次
print(i)
#1.2 去掉输入前后的空格
#strip():去掉元素前后方的空格,但中间的空格不去掉
s1=input().strip()
print(s1)
#1.3 所输入即所得 eval()直接将字符串当作有效的表达式,(可以理解为暂时的去掉字符串的引号)
test=eval(input()) # 尝试输入内容[1,2,3,4]或者{”张三":18}
print(test)
print(type(test)) # type判断数据类型
# 2 输出
# 2.1 格式化输出format
a=50
b=168
c=a/b*100
print("hello{0},你的成绩提高了{1:.0f}%".format("小明",c)) #所有的(包括%)都要写在”“里面
print("hello{0},你的成绩提高了{1:.2f}%".format("小明",c)) #所有的(包括%)都要写在”“里面
print("hello%s,你的成绩提高了%d%%" % ("小明",c)) # 用两个%%来表示%的含义
# 2.2 以end输出
#python默认输出会换行,使用end=" "就可以不换行输出 ”“里面就是输出连接符
print("cxj",end="")
print("不挂科",end="加油啊") # 可以理解为就是一个拼接技术'''
print()
# 3. 列表,字典,元组,集合
# 创建空列表
empty_list=[]
empty_list=list()
# 创建空元组
empty_tuple=()
empty_tuple=tuple()
# 创建空集合
empty_set=set()
# 创建空字典
empty_dict={}
empty_dict=dict()
#往集合中添加元素 1 :
empty_set.add(1)
# 3.1 列表
a=["刘六","陈七","李四","张三","d","j"]
b=["张三","王五"]
# 增加,插入
a.insert(2,"薛之谦") # 在二号位插入元素'薛之谦'
a.extend(b) #对列表a再追加一个列表b
a.append(78) #对列表在末尾添加元素
print(a)
# 删除
a.pop(1) # 删除下标为1的元素,不写就默认为最后一个元素
a.remove("张三") # 删除某个特定的元素,指名道姓了
# 修改
a[3]="罗永浩" # 修改即直接对列表中某个元素重新赋值操作
print(a)
# 查询 列表查询元素没有get()方法,字典才有
c=a.index("张三") #返回'张三'的下标
print(c)
# 判断某元素是否在列表里
print("张三" in a) # 返回布尔值 True
a.clear() #清空列表
print(a) # 输出一个空列表
# 切片,包头不包尾 使得str[:2]+str[2:]==str
str=['i', 'am',' a','student']
e=str[:] # 啥也不写,默认从0开始到结尾,步长为1
e=str[:2] # 取出 0,1,下标元素
e=str[:3:2] # 步长为2
e=str[-1:0:-1] # 从-1位置到不包括0的位置 (不要求start>stop) 结果:['student', ' a', 'am']
e=str[::-1] #反向提取 结果: ['student', ' a', 'am', 'i']
print(e)
# 3.2 字典
# 3.2.1 字典的get()方法查询元素
dict={"张三":43}
print(dict.get("张三",43)) # 要有两个参数,第二个随便写,为了没查询到元素时不报错
d=dict.get("张三",78) # 查询到了key就返回它的value
d2=dict.get("李四",788) # 没查询到元素时不报错,返回788
print(d)
print(d2)
# 3.2.2 字典中的某个值可以表示为:dict[key] key是包含了""的,一个完整的"name","age"才叫key
student={"name":"张三","age":18,"gender":"男"}
print(student.get("name","good"))
print(student.get("grade","sorry,没有此元素")) #没有grade,因此返回第二个参数'good',他是不报错的
print(student["gender"]) # 注意要加"",不然会错
# 3.2.3 使用update()可以一次更新多个元素
student.update({'math':99,"英语":100,"python":100})
print("math:",student["math"])
# 3.2.4 删除元素 del/pop
del student["age"]
print(student)
# pop() 用变量来接收pop的值,不用变量接收就不会返回该值
k=student.pop("math") # 返回99
student.pop("python") #返回删除'python'后的列表
print(k)
print(student)
# 3.2.5 迭代
# 以键循环:只迭代出key,没有value
for keys in student: #没有加属性,就只遍历出key
print(keys)
# 键,值 循环
for key,values in student.items():
print(key,values)
#只循环key
for key in student.keys():
print(key)
#只循环value
for i in student.values():
print(i)
# 3.3 元组
tup1=('张三','李四',"王五")
print(tup1[2])
#tup1[0]="六二" #xxxxxxxxxx错误的,元组内元素不能改变,只读不写
# 3.4 排序
# 3.4.1 sort() / sorted()顺序
# sorted() 可以将字符串排除分隔并排序
s='7506'
a=sorted(s)
print(a)
# sort()会改变原来列表的顺序,不用创建变量来接收返回值
name=['z',"b","h"]
name.sort()
print(name)
# sorted()不会改变原来列表顺序,返回排序后的版本,需要创建一个变量来接收返回值
num=[2,5,3,99,6]
num=sorted(num)
print(num)
# 3.4.2 倒序
# reverse() #会改变原来列表顺序,不用创建变量来接收返回值
name=['a',"b","h","j"]
name.reverse()
print(name)
# reversed() 需要创建一个变量来接收返回值. 也可以用[::-1]来颠倒,但不是排序
num=[34,65,78,33,23]
newnum=reversed(num)
print(list(newnum)) #需要转换成为列表
# 在参数中申明sort的方法
num=[34,65,78,33,23]
num.sort(reverse=True) #不用创建变量来接收返回值
print(num)
num.sort(reverse=False) #不用创建变量来接收返回值
print(num)
num=[1,2,4,6,3]
print(num[::-1]) #[3, 6, 4, 2, 1]'''
# 去重,利用set()得到的返回值是集合,要得到列表需要再加一个list转换
num_list=[2,3,4,2,6,3]
print(set(num_list))
print(list(set(num_list)))
# 4.循环与条件判断
# 4.1 for in 循环
for _ in range(1,10): # 注意参数取值范围,前开后闭
print(_)
# 4.2 while 循环
happiness=0
while happiness!=22:
happiness+=1 # 一定要有使得循环趋于结束的条件,否则会进入死循环
print("祝你好运")
# 4.3 条件判断
# 4.3.1 判断输入的年份是否为闰年
year=int(input("输入年份"))
if year%400==0 or (year%4==0 and year%100!=0):
print ("%s是闰年" % year)
else:
print ("{0}不是闰年".format(year))
# 4.3.2 判断BMI值
height=eval(input('输入你的身高')) # 以米为单位输入
weight=eval(input('输入你的体重')) # 以千克为单位输入
BMI=weight/height**2
if BMI<18.5:
print("过轻")
elif 18.5<=BMI<25:
print("正常")
elif 25<=BMI<28:
print("过重")
elif 28<=BMI<32:
print("肥胖")
else:
print("严重肥胖,注意健康")
# 4.3.3 判断成绩等级
grade=int(input('输入你的成绩'))
dic={"优秀":[90,100],
"良好":[80,89],
"中等":[70,79],
"及格":[60,69],
"不及格":[0,59]}
for k,v in dic.items():
if v[0]<=grade<=v[1]:
print("你的成绩为%s,等级为%s" % (grade,k))
# 5. 列表与字符串之间的转换
#列表--->字符串:join()
# 字符串--->列表: split()
strs=["i","am","a","student"]
a=" ".join(strs) # 以""里面的内容拼接
print(a)
#就只是把字符串又完整的放回列表
strs="vcb,ji,ij,j,a,w" # 这一个字符串中有15个元素,其中','也算.
str="hgfeiduy"
b=strs.split(".")
print(b)
d=str.split(" ")
print(d)
# 6.列表推导式
# 6.1 求平方
squares=[x*2 for x in range(1,10)]
print(squares)
#2. 求偶数(带条件的列表生成式)
num=[x for x in range(100) if x%2==0]
print(num)
# 6.2 最值/求和
#对于可迭代对象,可以直接用sum(),max(),min()
nums=[95,97,93,89,90]
print(sum(nums))
print(min(nums))
print(max(nums))
# 7. 函数
def f(n):
pass
def f(*n):
pass
def f(**n):
pass
'''
函数参数中n表示:传入的一个参数
参数中带有*n表示:将参数以元组的形式导入(不限个数)
参数中带有**n表示:将参数以字典的形式导入(不限个数)
'''
# 举两个例子:
def f(num):
sum=num+19000
return sum
b=34
print(f(b))
def f(*num):
sum=0
for i in num:
sum+=i**2
return sum
print(f(2,9,6))
# 8. ASCII与字符的互换
# 使用ord()与chr()
ascii=65
print(chr(ascii))
str="z"
print(ord(str))
# 9. 进制转换
#将八进制的56转换为十进制
print(int('56',8)) #56需要加上"",即转换为字符串
#转换为二进制:bin
print(bin(1024))
#转换为八进制:oct
print(oct(8732))
# 用e代替10:
print(1.23e9)
# 10.一些常用的库
# math库
import math
# 幂:pow(x,y)
d=math.pow(3,4)
print(d)
# 平方根:sqrt
a=math.sqrt(9)
print(a)
# 全排列
import itertools
s=["a","b","c"] # 对列表元素进行无重复组合
l=list(itertools.permutations(s))
print(l)
# 对数组中元素计数
nums = [10,6,5,8,5,8]
from collections import Counter
nums = Counter(nums)
print(nums) # Counter({5: 2, 8: 2, 10: 1, 6: 1})
for i,item in nums.items():
print(i,item) # 会依次打印出统计元素后的元素,个数

3 结语

Python入门选手刚开始接触都会有一定难度,本文总结的内容较为基础,适合刚入门的新手,代码也比较多,也有的不全面,后面会继续完善,希望阅读之后的你在编程路上的兴趣和自信有所提高。


作者:陈相君