python 간단 한 실례 훈련(21~30)

11553 단어 python 인 스 턴 스
메모:제 가 사용 하 는 python 2.7,여러분 이 Python 3.0 이상 의 버 전 을 사용한다 면 print()함수 에 있 는 것 을 기억 하 세 요!버 전 문제 로 댓 글 달 면 답장 안 해!!
21.문제:하나의 정 수 를 질량 인 수 를 분해 합 니 다.예 를 들 어 90 을 입력 하고 90=2*3*3*5 를 출력 합 니 다.
프로그램 분석:n 에 대해 분해 질량 인 수 를 진행 하려 면 먼저 가장 작은 질량 k 를 찾 은 다음 에 다음 절차 에 따라 완성 해 야 한다.
(1)만약 에 이 질 수가 n 과 같다 면 질 인 수 를 분해 하 는 과정 이 이미 끝 났 음 을 설명 하고 인쇄 하면 된다.
(2)만약 n!=k.그러나 n 이 k 에 의 해 정 제 될 수 있 으 면 k 의 값 을 인쇄 하고 n 으로 k 를 나 누 는 업 체 를 새로운 정수 로 n 으로 하여 첫 번 째 단 계 를 반복 해 야 합 니 다.
(3)n 이 k 에 의 해 제거 되 지 않 으 면 k+1 을 k 의 값 으로 하고 첫 번 째 단 계 를 반복 합 니 다.
메모:format 라 는 함 수 를 알 아야 합 니 다.사실은 포맷 입 니 다.print 와 차이 가 많 지 않 습 니 다.구체 적 으로 참고 할 수 있 습 니 다https://www.jb51.net/article/63672.htm
방법 1:순환 만 사용

# -*- coding: UTF-8 -*-
while True:
 n = input("      :")
 #                   ,  
 print '{} = '.format(n), 
 #             
 if not isinstance(n, int) or n <= 0 :
  print '           !' 
 #         1,     1
 if n in [1] : 
  print '{}'.format(n) 
 while n >= 2:
  for i in range(2,n + 1):
   if n % i == 0:
    n /= i  #n    n/i
    if n == 1: 
     print i ,
    else :  # index      
     print '{} *'.format(i),
    break
 print  #   
방법 2:정의 함수

# -*- coding: UTF-8 -*-
def reduceNum(n):
 print '{} = '.format(n),
 if not isinstance(n, int) or n <= 0 :
  print '           !'
  exit(0)
 elif n in [1] :
  print '{}'.format(n)
 while n not in [1] : #       
  for i in range(2, n + 1) :
   if n % i == 0:
    n /= i # n    n/i
    if n == 1: 
     print i 
    else : # i      
     print '{} *'.format(i),
    break

reduceNum(100)
reduceNum(9)
출력:
100 = 2 * 2 * 5 * 5
9 = 3 * 3
방법 3:목록 append 함수 로 모든 x 인 자 를 목록 으로 출력 합 니 다.

# -*- coding: UTF-8 -*-
while True:
 x = input("pls input a number:")
 ret = []
 while x > 1:
  for v in range(2,x + 1):
   if x % v == 0:
    ret.append(v)
    x /= v
    break
 print ret

   :
  pls input a number:9
  [3, 3]
설명:사실 두 가지 방법 은 대동소이 해서 별 차이 가 없다.
22.제목:s=a+aa+aa+aa+aa...a 의 값 을 구 합 니 다.그 중에서 a 는 숫자 입 니 다.예 를 들 어 2+22+2222+22222(이때 모두 5 개의 수 를 더 함),몇 개의 수 를 더 하면 키보드 제어 가 있다.
프로그램 분석:관건 은 모든 항목 을 계산 하 는 것 이다.

# -*- coding: UTF-8 -*-
Tn = 0
Sn = [] #        
n = int(raw_input('             n = :')) #         
a = int(raw_input('     a = :')) #       
for count in range(n):
 Tn = Tn + a 
 a = a * 10
 Sn.append(Tn)#        Sn   
 print Tn

 #lambda        ,          
Sn = reduce(lambda x,y : x + y,Sn)
print Sn
원 하 는 숫자 를 입력 하 십시오 n=:5
숫자 입력 a=:6
6
66
666
6666
66666
74070
사용 한 함수:
1.python 의 reduce 내 건 함 수 는 이원 조작 함수 입 니 다.그 는 하나의 데이터 집합(링크,모듈 등)중의 모든 데 이 터 를 다음 과 같이 조작 합 니 다.reduce 에 전 달 된 함수 func()(하나의 이원 조작 함수 여야 합 니 다)로 먼저 집합 중의 1,2 개의 데 이 터 를 조작 하고 얻 은 결 과 는 세 번 째 데이터 와 func()함수 로 연산 합 니 다.마지막 으로 결 과 를 얻다.
구체 적 으로 참고 가능https://www.jb51.net/article/128310.htm
2.lambda 함수,연결 보기https://www.jb51.net/article/128311.htm
23.문제:하나의 수가 그 인자 의 합 과 같다 면 이 수 를'완수'라 고 부른다.예 를 들 어 6=1+2+3.프로 그래 밍 은 1000 이내 의 모든 완 수 를 찾 습 니 다.
프로그램 분석:프로그램 Python 연습 실례 14 를 참조 하 십시오.뒤에 판단 조건 만 더 하면 됩 니 다.주의 하 세 요.출력 인자 에 1 을 더 해 야 합 니 다.문 제 를 잘 보 세 요.1 은 그 어떠한 수의 인자 이기 때문에 빠 뜨 려 서 는 안 됩 니 다.

# -*- coding: UTF-8 -*-
import random
import time

while True:
 x = random.randint(1,1000)
 #          x  ,    x      
 s = x 
 factors = [1] #1       
 while x > 1:
  #       x,       x  ,       
  for v in range(2,x + 1):
   if x % v == 0:
    factors.append(v) 
    #          ,                
    x /= v
    #  break        ,     break   for  
    break
 print "      %s,  "%(factors),
 if sum(factors) == s: #         
  print "%d    "%(s)
 else:
  print "%d     "%(s)
time.sleep(1) #       ,        
출력:
모든 인 자 는[1,2,2,2,31]이기 때문에 248 은 정수 가 아니다.
모든 인 자 는[1,2,2,2,73]이기 때문에 584 는 정수 가 아니다.
모든 인 자 는[1,823]이기 때문에 823 은 정수 가 아니다.
모든 인 자 는[1,281]이기 때문에 281 은 정수 가 아니다.
모든 인 자 는[1,467]이기 때문에 467 은 정수 가 아니다.
모든 인 자 는[1,2,359]이기 때문에 718 은 정수 가 아니다.
모든 인 자 는[1,2,7,47]이기 때문에 658 은 정수 가 아니다.
모든 인 자 는[1,751]이기 때문에 751 은 정수 가 아니다.
모든 인 자 는[1,3,71]이기 때문에 213 은 정수 가 아니다.
24.제목:두 탁구 팀 이 경 기 를 하고 세 명 씩 낸다.갑 팀 은 a,b,c 세 명,을 팀 은 x,y,z 세 명 이다.이미 추첨 하여 경기 명단 을 결정 하 였 다.누군가가 선수 에 게 경기 의 명단 을 물 었 다.a.그 는 x 와 비교 하지 않 는 다 고 합 니 다.c 는 x,z 와 비교 하지 않 는 다 고 합 니 다.프로그램 을 짜 서 세 팀 의 선수 명단 을 찾 아 주세요.
프로그램 분석:수학 적 으로 이해 하기 쉽 죠?그런데 여기 알파벳 을 ASCII 코드 로 바 꿔 서 해 야 돼 요!

# -*- coding: UTF-8 -*-

for i in range(ord('x'),ord('z') + 1):
 for j in range(ord('x'),ord('z') + 1):
  if i != j:
   for k in range(ord('x'),ord('z') + 1):
    if (i != k) and (j != k):
     if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):
      print 'order is a -- %s\t b -- %s\tc--%s' % (chr(i),chr(j),chr(k))
25.문제:1/2,3/2,5/3,8/5,13/8,21/13............................................................
프로그램 분석:분자 와 분모 의 변화 규칙 을 잡 으 세 요.분 모 는 피 보 나치 수열 임 을 알 수 있 습 니 다.
방법 1:첫 번 째 분수 의 분자 분모 의 합 은 두 번 째 수의 분자 이다.

# -*- coding: UTF-8 -*-

a = 2.0  #       
b = 1.0  #       
s = 0   # 20   
for n in range(1,21):
 s += a / b
 t = a  #       t
 a = a + b #               
 b = t  #      
print s
방법 2:

# -*- coding: UTF-8 -*-

a = 2.0
b = 1.0
s = 0.0
for n in range(1,21):
 s += a / b
 b,a = a , a + b
print s
방법 3:

# -*- coding: UTF-8 -*-

a = 2.0
b = 1.0
l = []
for n in range(1,21):
 b,a = a,a + b
 l.append(a / b)
print reduce(lambda x,y: x + y,l)
26.제목:1+2!+3!+…+20!의 합.
프로그램 분석:이 프로그램 은 누 가 를 누 승 으로 만 들 었 을 뿐이다.계단 을 생각해 보면 어떻게 계산 합 니까?n!=n×(n-1)×(n-2)×(n-3)×…×1.따라서 하나의 옮 겨 다 니 며 n 이내 의 숫자 를 곱 한 후에 더 하면 됩 니 다.
방법 1:

 # -*- coding: UTF-8 -*-

n = 0
s = 0
t = 1
for n in range(1,21):
 t *= n #  t  20        
 s += t #           s
print '1! + 2! + 3! + ... + 20! = %d' % s
방법 3:여 기 는 함 수 를 정의 하 는 방법 으로 sum 함 수 를 사용 합 니 다.

# -*- coding: UTF-8 -*-

s = 0
l = range(1,21)
def op(x):
 r = 1
 for i in range(1,x + 1):
  r *= i
 return r

s = sum(map(op,l)) 
print '1! + 2! + 3! + ... + 20! = %d' % s
출력:1!+2! + 3! + ... + 20! = 2561327494111820313
여기에 맵()함수 의 용법 을 보충 합 니 다.
간단 합 니 다.첫 번 째 매개 변 수 는 함수 명 을 받 고 두 번 째 매개 변 수 는 교체 가능 한 대상 을 받 습 니 다.

# -*- coding: UTF-8 -*-
ls = [1,2,3]
rs = map(str, ls)
#     ['1', '2', '3']

lt = [1, 2, 3, 4, 5, 6]
def add(num):
 return num + 1

rs = map(add, lt)
print rs 
#    [2,3,4,5,6,7]
27.문제:재 귀 방법 으로 5!
프로그램 분석:귀속 공식:fn=fn1*4!재 귀 하 는 방법 은 스스로 자신 을 호출 하 는 것 이다.

# -*- coding: UTF-8 -*-
def jiecheng(n):
 if n <= 1:
  return 1
 else:
  return n * jiecheng(n-1)
print jiecheng(5)

  :120
28.제목:입력 한 5 자 를 반대 순서 로 출력 합 니 다.
방법 1:재 귀 함수 호출 방식 이용

# -*- coding: UTF-8 -*-

def output(s,l):
 if l==0:
  return
 print (s[l-1])
 output(s,l-1)

s = raw_input('Input a string:')
l = len(s)
output(s,l)
출력:문자열 입력:1234
4
3
2
1
방법 2:reverse 함수 로

# -*- coding: UTF-8 -*-
a = [1,2,3,4,5]
a.reverse()
print a

   :

# -*- coding: UTF-8 -*-
s = list(raw_input('Input a string:'))
s.reverse()
print s
28.문제:다섯 명 이 앉 아서 다섯 번 째 사람 이 몇 살 이 냐 고 물 었 다.그 는 네 번 째 사람 보다 두 살 많다 고 말 했다.네 번 째 사람 에 게 나 이 를 물 었 더 니 세 번 째 사람 보다 두 살 많다 고 했다.세 번 째 사람 에 게 물 었 더 니 두 번 째 사람 보다 두 살 많다 고 한다.두 번 째 사람 에 게 물 어 보 니 첫 사람 보다 두 살 많다 고 한다.마지막 으로 첫 번 째 사람 에 게 물 었 더 니 10 살 이 라 고 했다.다섯 번 째 사람 은 몇 살 입 니까?
프로그램 분석:재 귀 하 는 방법 을 이용 하여 재 귀 는 회 추 와 전달 두 단계 로 나 뉜 다.다섯 번 째 사람의 나 이 를 알 고 싶다 면 네 번 째 사람의 나 이 를 알 고 순서대로 유추 해 첫 번 째 사람(10)으로 미 루 고 다시 미 뤄 야 한다.
방법 1:이 건 간단 하 죠?순환 할 때마다 2 를 넣 고 4 번 순환 하면 되 잖 아 요!

# -*- coding: UTF-8 -*-
x = 10
for i in range(1,5):
 x = x + 2
print x
방법 2:함 수 를 정의 하 는 방법

# -*- coding: UTF-8 -*-
def age(n):
 if n == 1: 
  x = 10
 else: 
  x = age(n - 1) + 2
 return x
print age(5)
29.문제:한 다섯 자리 숫자 로 그것 이 회 문수 인지 아 닌 지 를 판단 한다.즉 12321 은 답문 수로 개 위 는 만 위 와 같 고 10 위 는 천 위 와 같다.
프로그램 분석:이 다섯 자 리 를 중간 에서 나 누 어 대칭 성에 따라 자 른 다음 에 일치 하 는 지 비교 합 니 다.

# -*- coding: UTF-8 -*-
a = int(raw_input("       :"))
x = str(a)
flag = True

for i in range(len(x)/2):
 if x[i] != x[-i - 1]: #     ,      ,         
 flag = False
 break
if flag:
 print "%d       !" % a
else:
 print "%d        !" % a
출력:
숫자 를 입력 하 십시오:
15651
15651 은 하나의 회 문수 다!
30.문제:요일 의 첫 번 째 자 모 를 입력 하여 요일 을 판단 하 세 요.첫 번 째 자모 가 같 으 면 두 번 째 자 모 를 계속 판단 하 세 요.
프로그램 분석:상황 문 구 를 사용 하 는 것 이 좋 습 니 다.첫 번 째 자모 가 같 으 면 상황 문 이나 if 문 구 를 사용 하여 두 번 째 자 모 를 판단 합 니 다.와,이 문 제 는 정말 간단 할 것 같 아 요~요일 의 단어 들 이 어떤'Monday Tuesday Wednesday Thursday Friday Saturday Sunday'가 있 는 지 먼저 보 세 요.모든 것 은'T'와'S'만 두 번 째 알파벳 을 판단 해 야 합 니 다.

# -*- coding: UTF-8 -*-

 letter = raw_input("please input:")
 #while letter != 'Y':
 if letter == 'S':
  print ('please input second letter:')
  letter = raw_input("please input:")
  if letter == 'a':
   print ('Saturday')
  elif letter == 'u':
   print ('Sunday')
  else:
   print ('data error')

 elif letter == 'F':
  print ('Friday')

 elif letter == 'M':
  print ('Monday')

 elif letter == 'T':
  print ('please input second letter')
  letter = raw_input("please input:")

  if letter == 'u':
   print ('Tuesday')
  elif letter == 'h':
   print ('Thursday')
  else:
   print ('data error')

 elif letter == 'W':
  print ('Wednesday')
 else:
  print ('data error')
이 글 은 여기까지 소개 되 었 습 니 다.그 다음 에 저희 편집장 은 python 에 관 한 인 스 턴 스 자 료 를 계속 공유 할 것 입 니 다.

좋은 웹페이지 즐겨찾기