Python入門経典の基礎問題(day 4)を分かち合って完全な解答を添付します

5179 ワード

Python入門基礎問題の共有を続けます(day 4)
1.1,2,3,4個の数字があり、互いに異なり、重複しない3桁の数を構成することができますか?どれだけ
回答:
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if (i!=j) and (i!=k) and (j!=k):
                print(i,j,k)

2.企業がボーナスを支給する場合、利益lが10万元以下、ボーナスが10万元以上、利益が10万元以上、20万元以下の場合、10万元以下の場合、10万元以上の場合、7.5%、20万-40万元以上の場合、20万元以上の場合、5%以上、40万から60万までの場合、40万元以上の場合、3%以上、60-100万元以上の場合、60万元以上の場合、1.5%以上、100万元以上の場合、100万元を超える部分は1%に引き上げて、月利潤lを入力して、ボーナスの総数を支給することを求めます
回答:
l=int(input("     :"))
s=0
a=0
b=0
if l<=100000:
    s=l+l*0.1
elif l<=200000:
    a=(l-100000)*0.75
    b=100000*0.1
    s=a+l+a+b
elif l<=400000:
    a=(l-200000)*0.5
    s=l+a
elif l<=600000:
    a=(l-400000)*0.3
    s=l+a
elif l<=1000000:
    a=(1-600000)*1.5
    s=l+a
elif l>1000000:
    a=(l-1000000)*1
    s=l+a
print(s)

3.1つの整数、100をプラスした后に1つの完全な平方数で、268をプラスしても1つの完全な平方数で、この数はいくらですか?
回答:
import math
i=1
while i<=100000:
    x=int(math.sqrt(i+100))
    y=int(math.sqrt(i+268))
    if x*x==(i+100) and y*y==(i+268):
        print(i)
    i+=1

4.日付を入力して、この日がこの年の何日目かを判断します.
回答:
x=int(input("year"))
y=int(input("month"))
z=int(input("day"))
s=0

if x%4==0 and x%100!=0 or x%400==0:
    if x>2:
        s+=1
y1=[1,3,5,7,8,10,12]

for i in range(1,y):
    if i in y1:
        s=s+31
    elif i==2:
        s=s+28
    else:
        s=s+30

s=s+z
print(s)

5.条件演算子を利用して完成する;学習成績>=90点の生徒はA、60-89点の生徒はB、60点以下の生徒はC
回答:
s=int(input("       :"))

if s>=90:
    print("A")
elif s>=60:
    print("B")
elif s<60:
    print("C")
  

6.s=a+aaa+aaa+aaa+aaaaa+aaa+aaa...aの値を求め、ここでaは数字である.
回答:
x=input("      ?:")              #   5       :*+**+***+****+*****
y=input("     ?:")                #      2   :2+22+222+2222+22222
s=''
s1=0
for i in range(int(x)):

    s=s+y
    s1=s1+int(s)

print(s1)

7.1つのボールが100メートルの高さから落ちて、着地するたびに元の高さの半分に跳ね返った.更に落ちて、それが10回目に着地する時を求めて、共に何メートルを通りますか?10回目のリバウンドはどれくらいですか?
回答:
height=100                           #      100
s=100                                #s=100         
for i in range (9):                  #         100    ,       9 

    height=height/2                  #  9 ,           
    s=s+height*2                     #         ,  height   2,        100    ,   10     .

print("      ,    %f ,      %f " %(s,height/2)) #     9 ,       2,          .

8.1つの学校、3つの事務室があって、今8人の先生が工位の分配を待っていて、プログラムを編纂して、ランダムな分配を完成してください
回答:
import random

offices=[[],[],[]]

teachers=['A','B','C','D','E','F','G','H']

for i in teachers:
    a=random.randint(0,2)
    offices[a].append(i)

k=0
for j in offices:

    print("   {0} {1} ,   :{2}".format(k,len(j),j))
    k=k+1

9.あるシーケンス、2/1,3/2,5/3,8/5,13/8,21/13...この数列の前の20項と
回答:
a=1.0
b=2.0
sum=0.0

for i in range(20):
   sum=sum+b/a        
   s=a+b                  
   a=b                 
   b=s                  

print(sum)

10.1を求める!+2!+3!..+20!の和
回答:
def Jiecheng(m):
    p=1
    for i in range(1,m):
        p=p*i
    return p
s=0

for j in range(1,21):
    s=s+Jiecheng(j)

print(s)

11.再帰的な方法で階乗を求める
回答:
def Jiecheng(m):

    if m==1:
        return 1
    else:
        return m*Jiecheng(m-1)


for i in range(1,6):
    print("{0}!={1}".format(i,Jiecheng(i)))


12.再帰関数を使用して入力文字列を逆順序で出力する
回答:
def string(n):
    if len(n)<=1:
        return n
    else:
        return n[-1]+string(n[:-1])




x=input("        :")
print(string(x))


13.5人が一緒に座って、5人目は何歳ですか.彼は4人目より2歳年上だと言って、4人目に3人目より2歳年上だと聞いた.の最初の人は10歳です.この5人目はいくつですか?
回答:

def age(n):
    if n==1:
        s=10
    else:
        s=age(n-1)+2

    return s


print(age(5))


14.5桁以下の正の整数を与える.要求:一、それが何桁であるかを求める二、逆の順序で1桁の数字を印刷する
回答:
x=input("        5     :")

count=len(x)

e=int(x)%10                 #5
d=int(x)%100//10            #4
c=int(x)%1000//100          #3
b=int(x)//1000%10           #2
a=int(x)//10000             #1


if a!=0:
    print("    5  ",e,d,c,b,a)
elif b!=0:
    print("    4  ",e,d,c,b)
elif c!=0:
    print("    3  ",e,d,c)
elif d!=0:
    print("    2  ",e,d)
elif e!=0:
    print("    1  ",e)
else:
    print("    ")


15.3*3行列の対角線要素の和を求める
回答:
a=[
    [1,2,3],
    [4,5,6],
    [7,8,9]
]
s=0
for i in range(3):
    for j in range(3):
        if i==j:
            s+=a[i][j]

print(s)


16.配列されたシーケンスがあり、現在は数を入力し、元の法則に従って数列に挿入する必要があります.
回答:
s=[1,2,3,5,10]

x=int(input("      :"))


if x>=s[len(s)-1]:
    s.append(x)
else:
    for i in range(len(s)):
        if x<=s[i]:
            s.insert(i,x)
            break


print(s)