Python基礎練習問題と答え(一)

4386 ワード

この練習問題はすべてネット上で探して、しかしすべての問題のプログラムは私が自分で書いたので、プログラミングのレベルはわりに悪くて、また各位の見官が指摘することを望みます.
1.ランダムに2つの100未満の整数を生成し、そのうちの1つの数のデータ型と記憶アドレスを印刷し、この2つの数の和、差、積、商、べき乗演算を求める.
import random
num1 = random.randint(1,100)
num2 = random.randint(1,100)
print("     :%d,%d"%(num1,num2))
print("num1    :%s"%(type(num1)))
print("num1      :%d"%(id(num1)))
sum = num1 + num2
print("      :%d"%(sum))
dif = num1 - num2
print("      :%d"%(dif))
pro = num1 * num2
print("      :%d"%(pro))
dea = num1 / num2
print("      :%d"%(dea))

2.台形の面積を求めます:上底と下底と高さを入力して、面積を出力します.面積は2桁の有効な数字を保持し、入力が数字でない場合は異常処理でスナップし、再入力する必要があります.
def calc():
    top = int(input("       :"))
    bottom = int(input("       :"))
    heigh = int(input("      :"))
    area = ((top + bottom)*heigh)/2
    print("       :%0.2f"%(area))
while 1:
    try:
        calc()
        break
    except:
        print("    ,     !")

3.4桁の整数を入力し、逆シーケンス数を出力します.
num = input("         :")
print(num[::-1])

4.ランダムに1つのリストa、10の要素を生成する.順序を乱して、それからaの最大値、最小値、和、平均値を求めて、大きいから小さいまでの順序を表示します
import random
a = []
sum = 0
for i in range(0,10):
    num = random.randint(1,100)
    a.append(num)
a.sort(reverse=True)
print("a      :%d"%(a[0]))
print("a      :%d"%(a[-1]))

for j in range(0,len(a)):
    sum += a[j]

print("a   :%d"%(sum))
ave = (a[4]+a[5])/2
print("a     :%d"%(ave))
print(a)

5.ランダムに1つのリストaを生成し、10個の要素はいずれも10未満である.要素5を挿入し、6番目の位置に要素99を挿入し、最大値を出力し、奇数ビットの値を出力する(この問題の意味がよく分からない).
import random
a = []
for i in range(0,10):
    num = random.randint(1,10)
    a.append(num)
print(a)

6.通信録の例では、通信録を実現し、類似の機能は以下の通りであり、辞書のアクセスを練習する.「王さん」「111」「李さん」「112」へようこそ.
con = {}
while 1:
    print("="*30)
    print("       ")
    print("1、       (    )")
    print("2、       (    ,     )")
    print("3、       (  )")
    print("4、       ")
    print("5、     ")
    print("="*30)
    choose = int(input("     :"))

    if choose == 1:
        serch_name = input("     :")
        if serch_name in con.keys():
            print(con[serch_name])
        else:
            print("       !")

    elif choose == 2:
        add_name = input("     :")
        add_num = input("     :")

        con[add_name] = add_num
        print("    !")

    elif choose == 3:
        del_name = input("     :")
        if del_name in con.keys():
            con.pop(del_name)
            print("    !")
        else:
            print("      ,    !")

    elif choose == 4:
        for key in con:
            print("%s:%s"%(key,con[key]))

    elif choose == 5:
        print("    ,  !")
        exit()

7.多級辞書の訪問創建は以下の通りである:情報「四川」:「成都」:「青城山」、「都江堰」、「寛窄巷子」、「広元」:「剣門関」、「川信」、「紅星公園」出力:川信
addr = {"  ":{"  ":["   ","   ","    "],
              "  ":["   ","  ","    "]}}
print(addr["  "]["  "][1])

8.数字を当ててランダムに1つの数(1-20)を生成して、1つの数を入力して、もし等しいならば、出力は当てて、プログラムは終わって、もし小さく当てたら、出力は当てて小さくなって、引き続き当てて、もし大きく当てたら、出力は当てて大きくなって、引き続き当てて3回しか当てない機会を当てて、3回を超えて、ゲームは終わります
import random
num = random.randint(1,20)
i = 3
while i>0:
    inp_num = int(input("      (0-20):"))
    if inp_num == num:
        print("   ,   !")
        exit()
    if inp_num > num:
        print("   ,   !")
    if inp_num < num:
        print("   ,   !")
    i -= 1
print("    ,   !")
exit()

9.関数を作成し、年を入力し、閏年かどうかを判断する
year = int(input("     :"))
if year%4 == 0:
    print("%d   "%(year))
else:
    print("%d    "%(year))

10.関数を作成し、数字を入力し、素数かどうかを判断する
import math
flage = True
num = int(input("       :"))
if num == 2:
    print("2     ")
else:
    for i in range(2,int(math.sqrt(num)+1)):
        if num%i == 0:
            flage = False
            break
    if flage == True:
        print("%d     "%(num))
    else:
        print("%d      "%(num))