Python 第三次实验
一如既往地简单,不到半个小时即可完成
【1】 (程序设计)输入一个正整数,输出它的因子分解式。如输入132,则输出132=122311
n=int(input())
print(1,end='')
for i in range(2,n+1):
while(n%i==0):
n=n/i
print('*',i,sep='',end='')
【2】 (程序设计)用户输入一行字符串,统计并输出其中空格、数字、英文字母、其他字符的个数,输入输出格式如下:
例如:
请输入字符串:Version 3.1415
输入的字符串有1个空格,5个数字,7个英文字母,1个其它字符
str=input()
ans_space=0
ans_num=0
ans_other=0
ans_alphabet=0
for s in str:
if('0'<=s<='9'):
ans_num=ans_num+1
elif('a'<=s<='z' or 'A'<=s<='Z'):
ans_alphabet=ans_alphabet+1
elif(s==' '):
ans_space=ans_space+1
else:
ans_other=ans_other+1
print('输入的字符串有{}个空格,{}个数字,{}个英文字母,{}个其它字符'.format(ans_space,ans_num,ans_alphabet,ans_other))
【3】 (程序设计)输入两个正整数,输出这两个数之间有多少个数含有数字8。比如输入170和200,则在170和200之间有12个数含有8,则输出12。
def check(x):
if x%10==8:
return 1
if x==0:
return 0
return check(x//10)
l=int(input('请输入第一个正整数:'))
r=int(input('请输入第二个正整数:'))
ans=0
for i in range(l,r+1):
ans=ans+check(i)
print('{}和{}之间有{}个数含有数字8'.format(l,r,ans))
【4】 (程序设计)编写程序,输入正整数a和b,产生a个范围在[100,999]的随机整数。输出这a个随机数(每行5个,数据之间用一个空格隔开),找出能被b整除的数据个数。注意:不能使用列表、元组、集合、字典等组合数据类型。
import random
a=int(input('请输入整数a:'))
b=int(input('请输入整数b:'))
ans=0
for i in range(a):
x=random.randint(100,999)
print(x,end=' ')
if(i%5==4):
print('')
if(x%b==0):
ans=ans+1
print('总共{}个数能被{}整除'.format(ans,b))
【5】 (程序设计)设计一个函数 func(a),它接受一个正整数a,函数返回这个数字每个位上数字的和(函数内不能有input,print语句,不能使用global语句),例如,func(123),返回6,因为1+2+3=6。
def func(x):
if(x==0):
return 0
return x%10+func(x//10)
n=int(input('请输入一个整数:'))
print('它的各位数字之和为',func(n),sep='')
【6】 (程序设计)设计一个函数func(s),它接受一个字符串变量s,返回其中大写字母的个数。
def func(str):
ans=0
for s in str:
if('A'<=s<='Z'):
ans=ans+1
return ans
str=input()
print(func(str))
【7】 (程序设计)定义一个函数,该函数返回参数字符串中包含多少个数字、多少个英文字母。
def get(str):
ans_num=0
ans_alphabet=0
for s in str:
if '0'<=s<='9':
ans_num=ans_num+1
if 'a'<=s<='z' or 'A'<=s<='Z':
ans_alphabet=ans_alphabet+1
return [ans_num,ans_alphabet]
str=input()
ret=get(str)
print('字符串里有{}个数字,{}个字母'.format(ret[0],ret[1]))
【8】 (程序设计)区间素数和。输入两个正整数m,n ( m < n),编写程序求[m,n]之间的所有素数的和。要求定义函数def IsPrime(m)判断整数m是否是素数,如果是素数返回True否则返回False。
def IsPrime(m):
i=2
while i*i<=m:
if(m%i==0):
return 0
i=i+1
return 1
m=int(input('请输入整数m:'))
n=int(input('请输入整数n:'))
ans=0
for i in range(m,n+1):
if(IsPrime(i)):
ans=ans+i
print('范围在[{},{}]的素数和为{}'.format(m,n,ans))