admin管理员组文章数量:1516870
疯狂Python讲义Unit4Test
#!/usr/bin/python3
# test01
'''
99乘法表
'''
for i in range(1,10):for j in range(1,i+1):print('%s*%s = %d'%(i,j,i*j),end=' ')print()# test02
'''
等腰三角形
'''
n=int(input('输入数字'))
for i in range(1,n+1):print(' '*(n-i)+'*'*(2*i-1))# test03
'''
横竖斜总和相等的奇数矩阵:
从小到大依次放入矩阵中,下一个数放在上一个数的右上角位置(即:行-1,列+1)
1总是在第一行的中间位置,接着将2放在1的右上角,依次类推
a.如果右上角的位置的行和列都越界,就将这个数放在上个数的正下方(即:上个数的行+1)
b.如果右上角的位置只有行越界,就将行改到最大,列不变
c.如果右上角的位置只有列越界,就将列改到最小,行不变
d.如果右上角的位置没有越界,但是已经填有数字,就将这个数放在上个数的正下方。
'''
n=int(input('请输入一个奇数'))
martix=[[0 for i in range(n)] for j in range(n)] #双重列表推导式构建出二维数组
num=1
y,x=0,n//2 #n整除2结果是第一行中间的列号for num in range(1,n*n+1):martix[y][x]=numy-=1x+=1if y<0 and x>n-1:y=y+2x=x-1elif y<0:y=n-1elif x>n-1:x=0elif martix[y][x]!=0:y=y+2x=x-1# while num <= n*n:
# martix[i][j]=num
# num += 1
# i-=1
# j+=1
# if i<0 and j>n-1:
# i=i+2
# j=j-1
# elif i<0:
# i=n-1
# elif j>n-1:
# j=0
# elif martix[i][j]!=0:
# i=i+2
# j=j-1
for i in range(n):for j in range(n):print('%02d'%(martix[i][j]),end=' ')print()# test04
'''
菱形
'''
n=int(input('输入数字'))
if n%2==0:exit("请输入奇数")
# 从中间分开,分别打印上下
half=n//2 + 1
for i in range(half):print(' '*(half-i-1)+'*'*(2*i+1))
for i in range(half-1):print(' '*(i+1)+'*'*(n-2-2*i))# test05:完全是应用了数学等差公式,将流程、顺序和公式写出来,程序就很容易实现
'''
空心菱形
1、如果i==0和n-1输出一个*
2、上半部分左边空格依次:' '*(half-i-1),下半部分左边空格依次:' '*(i+1)
3、如果不是第一个和最后一个,上半部分输出'*'+' '*(2*i-1)+'*';下半部分输出'*'+' '*(n-4-2*i)+'*'
'''
n=int(input('输入数字'))
if n%2==0:exit("请输入奇数")
# 从中间分开,分别打印上下
half=n//2 + 1
for i in range(half):print(' '*(half-i-1),end='')if i==0:print('*')else:print('*'+' '*(2*i-1)+'*')
for i in range(half-1):print(' '*(i+1),end='')if i==half-2:print('*')else:print('*'+' '*(n-4-2*i)+'*')# test06:分数分级
score=int(input('输出分数\n'))
if score>=90:print('A')
elif score>=80:print('B')
elif score>=70:print('C')
else:print('D')# test07
# 判断101~200之间有多少个素数(质数),并输出所有的素数(质数)
# 1
count=0
suarray=[]
for i in range(101,201):for j in range(2,i): # j是除数if i%j == 0: # 如果2~(i-1)之间能整除,则不是质数# print(i,'不是质数')breakelif j==i-1: # 如果加到了i-1都不能整除的话,那么是质数print(i,'是质数')suarray.append(i)count+=1
print('质数是',suarray)
print('共计',count)
# 2:标志位来判断
prime_num = []
start = 101
end = 200
for i in range(start, end+1):is_prime = True # 通过使用标志位来判断是否是素数for j in range(2, int(i ** 0.5) + 1): # int(i ** 0.5) + 1可以改为i,这样即一直除到i-1;当前除到(i ** 0.5) + 1,是一种数学简略的方式if i % j == 0:is_prime = Falseif is_prime:prime_num.append(i)
print(prime_num)
print(len(prime_num))# test08:水仙花数,三位数,各位数字的幂之和等于该数本身
daffodil=[]
for i in range(100,1000):j=str(i)if i==(int(j[0])**3)+(int(j[1])**3)+(int(j[2])**3):# print(i,'是水仙花')daffodil.append(i)
print(daffodil)# test09:输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数
n=input('输入一行字符:\n')
char_num, digit_num, space_num, other_num = 0, 0, 0, 0
for i in n:if i.isdigit(): #判断数字字符串digit_num += 1elif i.isalpha(): #判断字母字符串char_num += 1elif i.isspace(): #判断空格的字符串space_num += 1else:other_num += 1
print("字母个数:", char_num)
print("数字个数:", digit_num)
print("空格个数:", space_num)
print("其他字符个数:", other_num)# test10:近似圆:只要给定不同的半径,圆的大小就会随之改变:待完善
raidus = int(input("请输入圆的半径:"))
for i in range(2 * raidus + 1):half = round((raidus ** 2 - (raidus - i) ** 2) ** 0.5)print(" " * (raidus - half), end="")print("*", end="")print(" " * half * 2, end="")print("*")# test11
'''
输入一半的行数,输出对称字符,例如输入3,输出:
----c----
--c-b-c--
c-b-a-b-c
--c-b-c--
----c----
找规律
'''
line = int(input("请输入一半的行数:"))
# 打印上半部分
for i in range(line):print('-'*(line*2-2*i-2),end='')mylist=[]for j in range(i+1): # 找出每行前一半的英文字符mylist.append(chr(96+line-j)) # 依次返回每行需要的英文字符(递减)for j in range(i): #输出每行后一半的英文字符,从最后一个到第一个比如最后一个a,然后依次b、cmylist.append(chr(ord(mylist[-1])+1)) # 每次append以后 数列最后已经变了print('-'.join(mylist),end='') # 使用join方法用'-'将字符连接为字符串print('-'*(line*2-2*i-2))
# 打印下半部分
for i in range(line-1):print('-'*(2*i+2),end='')mylist = []for j in range(line-1-i): # 一半依次减少1mylist.append(chr(96+line-j)) # chr()函数返回单字符Unicode字符串for j in range(line-i-2): # 右边依次减少1mylist.append(chr(ord(mylist[-1])+1)) #ord()函数返回一个单字符字符串的Unicode编码print('-'.join(mylist), end='')print('-'*(2*i+2))
本文标签: 疯狂Python讲义Unit4Test
版权声明:本文标题:疯狂Python讲义Unit4Test 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1706284009a687277.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论