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))
posted @ 2022-03-26 14:34  AlphaInf  阅读(2167)  评论(0编辑  收藏  举报