第2章 语法基础
1.判断以下标识符命名是否符合要求( )。
A)@abc
B)a_b_c
C)姓名
D)student age
E)a# b
F)a_1
G)1_a
H)for
BF
2.阅读以下程序代码,写出程序执行结果。
A)
a = 5 > 4 and 2
print(a)
2
B)
b = 6 < 5 or 3
print(b)
3
C)
c = 0x11
print("%o" % c)
21
D)
a = 3 and 4
b = a ** 2
print(b)
16
E)
a = 13
b = a/5 + a//5 + a % 5
print(b)
7.6
3.编写程序,实现图2-6所示效果(说明:打印内容位于正中间,整体宽度为30个字符,高度为 5 行)。
#法一
content=input("请输入你需要打印的内容:")
width=len(content)+5*2#计算中间部分长度
print("="*(width+2))#打印第一行
print("|"," "*width,"|",sep="")#打印第二行
print("|",content.center(width),"|",sep="")#打印中间内容
print("|"," "*width,"|",sep="")#打印第四行
print("="*(width+2))
#法二
text=input("请输入你需要打印的内容:")
print("="*30)
print("|",' '*26,"|")
print("|",text.center(26,' '),"|")
print("|",' '*26,"|")
print("="*30)
3.2 选择结构
代码如下:
num=int(input("请输入年份:"))
if num % 4==0 and num % 100 !=0 or num % 400 == 0:
print(num," 是闰年")
else:
print(num," 是平年")
3.3 循环结构
代码如下:
row=int(input("请输入一个整数:"))
for i in range(1,row+1):
j=1
print(" "*(row-i),end=" ")
k=i-1
while j<=i:
print(j,end=" ")
j=j+1
while k>0:
print(k,end=" ")
k=k-1
print()
代码如下:
for i in range(1,10):
for j in range(1,i+1):
print(j,"*",i,"=",j*i,end=" ")
print()
3.4 循环控制语句
代码如下:
sum=0
for i in range(10):
if i%4==0:
break
sum=sum+i
print(sum)
sum=0
for i in range(10):
if i//4==2:
continue
sum=sum+i
print(sum)
sum=0
i=0
while i<10:
if i % 4==0:
continue
sum=sum+i
i=i+1
print(sum)
i=1
while i<5:
i=i+1
else:
i=i*2
print(i)
3.5 综合案例
代码如下:
rows=int(input("请输入菱形的行号:"))
half=rows//2
if rows%2==0:
up=half
else:
up=half+1
for i in range(1,up+1):
print(" "*(up-i),"*"*(2*i-1))
for i in range(half,0,-1):
print(" "*(up-i),"*"*(2*i-1))
4.1列表
1.代码如下:
#法一
a_list=[4,10,12,9,6,3]
b_list=[12,8,5,6,7,6,10]
ab_list=a_list+b_list
c_list=[]
for ab in ab_list:
if ab not in c_list:
c_list.append(ab)
print(c_list)
c_list.sort(reverse=True)
print(c_list)
#法二
a_list=[4,10,12,9,6,3]
b_list=[12,8,5,6,7,6,10]
c_list=list(set(a_list+b_list))
print(c_list)
c_list.sort(reverse=True)
print(c_list)
2.代码如下:
#法一
a_list=[4,6,8,6,4,2,6,6,5,7,4,2,1,7,6,7,4]
b_list=[]
for a in a_list:
if a not in b_list:
b_list.append(a)
print(b_list)
for b in b_list:
print("元素",b,"在列表中出现了",a_list.count(b),"次")
#法二
a_list=[4,6,8,6,4,2,6,6,5,7,4,2,1,7,6,7,4]
b_list=list(set(a_list))
for b in b_list:
print("元素",b,"在列表中出现了",a_list.count(b),"次")
4.3字符串
1.代码如下:
#删除重复元素、列表转字符串
a_list = [4, 8, 7, 8, 6, 3]
b_list=[]
for i in a_list:
if i not in b_list:
b_list.append(i)
print(b_list)
#先将列表里的元素转换成字符串
b_str=[]
for b in b_list:
b_str.append(str(b))
#再用join将字符串连接
print(''.join(b_str))
2.代码如下
#(统计字符出现的频数)
str1 =input("请输入一个字符串:")
str2=[]
for s in str1:
if s not in str2:
str2.append(s)
str2=''.join(str2)
ls=[]
for s in str2:
if s in str1:
ls.append((s,str1.count(s)))
ls.sort()
num=[]
for i in ls:
num.append(i[1])
if i[1]==max(num):
print(i[0])
1.代码如下:
str1 =input("请输入字符串")
d={}
for s in str1:
d[s]=d.get(s,0)+1
ls=list(d.items())
ls.sort(key=lambda x:x[1],reverse=True)
for i in ls:
print(i[0],"字符出现次数为:",i[1])
1.代码如下:
a_list=[4,6,8,9]
c_list=[]
for i in a_list:
for j in a_list:
for k in a_list:
if i!=j and j!=k and k!=i:
c=k*100+j*10+i
c_list.append(c)
print(c_list)
2.代码如下:
datas={'Aaa':80,'Ddd':65,'Mmm':58,'Bbb':75,'Eee':90,'Www':86,'Ccc':88,'Fff':95,'Yyy':78}
data=sorted(datas.items(),key=lambda item:item[1],reverse=True)
print(data)
great=[]
s=sum(datas.values())/len(datas)
for i in datas.values():
if i >= 90:
great.append(i)
s_r=len(great)/len(datas)
print("班级平均分以及优秀率分别为:{0:.2f},{1:.2f}".format(s,s_r))
5.1 函数的定义与调用
1.代码如下
def lingxing(rows):
half=rows//2
if rows%2==0:
up=half
else:
up=half+1
for i in range(1,up+1):
print(" "*(up-i),"*"*(2*i-1))
for i in range(half,0,-1):
print(" "*(up-i),"*"*(2*i-1))
num=int(input("请输入菱形的行数:"))
lingxing(num)
2.代码如下
def Count(a,b):
if a > b:
a,b = b,a
s = 0
for i in range(a,b+1):
s += i
return s
a = eval(input("请输入一个整数"))
b = eval(input("请输入一个整数"))
print(Count(a,b))
5.2 参数类型与参数传递
1.代码如下:
def cacluate(*num): # 定义带任意参数的函数
if len(num)==1:
z_s=num[0]*num[0]
z_c=num[0]*4
print("正方形的面积为:",z_s)
print("正方形的周长为:",z_c)
if len(num)==2:
c_s=num[0]*num[1]
c_c=(num[0]+num[1])*2
print("长方形的面积为:",c_s)
print("长方形的周长为:",c_c)
cacluate(1)
print()
cacluate(1,5)
5.3 变量作用域与递归
1.代码如下:
s=0
number=[]
def math(num):
global s
if num==1:
return 1
elif num%2==0:
n=num/2
number.append(n)
s=s+1
math(n)
return n
elif num%2!=0:
n=num*3+1
number.append(n)
s=s+1
math(n)
return n
num=eval(input("请输入一个自然数:"))
math(num)
print("输出",number)
print("步长为",s)
5.5本章小结
1.代码如下:
class Solution:
def jumpFloor(self, number):
a = [1,2]
if number > 2:
for i in range(2,number):
a.append(a[i-2]+a[i-1])
return a[number-1]
S=Solution()
print(S.jumpFloor(9))
2.代码如下:
def shu(num):
odd=[]
double=[]
for i in num:
if i%2!=0:
odd.append(i)
else:
double.append(i)
c=odd+double
print(c)
num=[9,6,7,3,1,8,4,6]
shu(num)
7.6本章小结
1.代码如下:
import time
for i in range(1,100):
time.sleep(0.2)
print("\r当前下载进度为:",i,"%",end="")
print("\r下载完成!")
2.代码如下:
import string
import random
x = string.ascii_letters
y = [random.choice(x.lower()) for i in range(1000)]
z = ''.join(y)
d = dict() #创建空字典
for ch in z: #统计每个字符在字符串中出现的次数
d[ch] = d.get(ch, 0) + 1
#print(d) #每个字符出现的次数
ls=list(d.items())
ls.sort(key=lambda x:x[1],reverse=True)
print(ls)
8.1 文本文件的读写
file = open('mult.txt','w')
for i in range(1,10):
for j in range(1,i+1):
s ='{}*{}={:2} '.format(j,i,i*j)
file.write(s)
file.write('\n')
file.close()
8.2 文件与文件夹的常见操作
8.3Excel文件的读写
8.4本章小结