第一题:
s = input()
space = 0
letter = 0
other = 0
digit = 0
for c in s:
if c.isalpha():
letter+=1
elif c.isspace():
space+=1
elif c.isdigit():
digit+=1
else:
other+=1
print(letter,space,digit,other,sep=' ')
第二题:
s = list(map(int,input().split()))
s.sort()
N=s[0]
M=s[1]
while True:
if M%N==0:
break
else:
temp = N
N = M%N
M = temp
r1 = N
M=s[1]
while True:
if M%s[1]==0 and M%s[0]==0:
break
M+=1
r2 = M
print('{} {}'.format(r1,r2))
思考:M+=1的位置 放上面错误!!会丢失一种情况
辗转相除法求最大公约数
第三题:循环嵌套 注意range()前闭后开
n = int(input())
s = 0
for i in range(1,n+1,2):
temp = 1
for j in range(1,i+1):
temp *= j
s = s+temp
print('n={:},s={:}'.format(n,s))
第四题:一个数同时满足上诉条件
p = 1
while True:
a1 = p%5
a2 = p%6
a3 = p%7
a4 = p%11
if a1==1 and a2==5 and a3==4 and a4==10:
break
p+=1
print(p)
第五题:
import random
a,n = map(int,input().split())
random.seed(a)
i = 0
while i < n:
x = random.randint(1,9)
y = random.randint(1,9)
print('{}+{}='.format(x,y))
i+=1
第六题:
import random
x,n = map(int,input().split())
random.seed(x)
count = 1
for i in range(n):
s = []
for j in range(23):
s.append(random.randint(1,365))
s.sort()
flag = False
for i in range(1,len(s)):
if s[i-1]==s[i]:
flag = True
break
if flag:
count+=1
print('rate={:.2f}'.format(count/n))
思考:flag的作用! 审题清楚 判断是否由重复生日 一个就够了
方法二:利用count()方法判断
import random
x,n = map(int,input().split())
random.seed(x)
count = 0
for i in range(n):
s = []
for j in range(23):
s.append(random.randint(1,365))
for j in s:
if s.count(j)>1:
count+=1
break
print('rate={:.2f}'.format(count/n))
第七题:
n = int(input())
try:
s = []
for i in range(n):
s.append(float(input()))
avg = sum(s)/n
print('正确')
print('avg={:.2f}'.format(avg))
except ZeroDivisionError:
print('除0错误,n不能等0')
except:
print('数值错误')
finally:
print('程序结束')
思考:恶心 英文的逗号
第八题:
s = input()
try:
n = int(input())
print(s[n])
except:
print('输入下标有误')
思考:有问题的都要放在try里面 比如说n的int
第九题:待解决 错误,请看方式二
import random
n = int(input())
s = 1
t = []
for i in range(1,n+1):
s*=i
t.append(str(i))
rate = []
result = []
for i in range(s):
result = result + [''.join(t)]
rate.extend(t)
while True:
random.seed()
random.shuffle(t)
for j in range(0,len(rate)-2,3):
flag = False
if rate[j:j+2] == t:
break
flag = True
if flag:
break
print('\n'.join(result))
方法二: 利用 not in
import random
n = int(input())
s = 1
t = []
for i in range(1,n+1):
s*=i
t.append(str(i))
result = [''.join(t)]
for i in range(s-1):
while True:
random.shuffle(t)
a = ''.join(t)
if a not in result:
break
result = result + [a]
result.sort()
print('\n'.join(result))
思考:range(s-1)一开始已经添加过元素了!!!
第十题:
n = int(input())
for i in range(1,n+1):
for j in range(i):
print(chr(65+j),end='')
print()
第十一题:
n = int(input())
for i in range(1,n+1):
id1 = i
s = []
for j in range(n-i+1):
s.append(id1)
id1 = id1+(n-j)
temp=''
for j in s:
temp=temp+'{: <3}'.format(j)
print(temp.strip())
复杂:错误
n = int(input())
Max = 0
for i in range(1,n+1):
id1 = i
s = []
for j in range(n-i+1):
s.append(id1)
id1 = id1+(5-j)
temp=''
if id1 > Max:
Max = id1-1
for j in s:
length = len(str(Max))+1
temp=temp+'{: <{:}}'.format(j,length)
print(temp.strip())
第十二题:
error = float(input())
i = 1
e1 = i
while True:
s = 1
for j in range(1,i+1):
s*=j
e1 = e1 + 1/s
i+=1
if 1/s<error:
print(round(e1,6))
break
关键词:服工实训八、Python