Python 第三次實驗
阿新 • • 發佈:2022-03-26
一如既往地簡單,不到半個小時即可完成
【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))