Python実験の質問

華中農業大学のパイソン実験問題、継続的に更新

課題 1: シーケンス、辞書、およびコレクションの型

1.ペアを見つける

【問題解説】

リスト nums に一連の数値を入力します。次のように、最大​​ 9 つの要素を追加してタプルを形成できるリスト内の任意の 2 つの要素を見つけてください。 (2,7)、(1、8)。繰り返されるタプルの 1 つの要素のみが保持され、結果はタプルの最初の要素の昇順で出力されます。

【入力例】

数字:3,4,5,7,2,8,1

【出力例】

[(1, 8), (2, 7), (4, 5)]

【難解な分析】 最初に空のリスト Lst を定義し、その後 Lst. のように、その都度要件を満たすタプルを追加して、タプルをリストの要素としてリストに挿入することができます。

lis=list(map(int,input("numbers:").split(',')))
lis.sort()
lis1=[]
for i in range(len(lis)):
    for j in range(i,len(lis)):
        if lis[i]+lis[j]==9:
            if (lis[i],lis[j]) not in lis1:
                lis1.append((lis[i],lis[j]))
print(lis1)

2.アルファベットの数え方

【問題解説】

文字列を入力し、文字列内で最も多く出現する文字と出現回数を出力します。出現回数が同じ文字が複数ある場合は、文字とその出現回数を昇順で出力します。
【入力フォーム】

文字列。
【出力フォーマット】

出現回数が最も多い文字と出現回数

【入力例】

abcccd
[出力例]

c 3

s=input()
dic={
    
    }
dic1={
    
    }
for i in s:
    if i in dic:
        dic[i]+=1
    else:
        dic[i]=1
max1=max(dic.values())
for key in dic:
    if dic[key]==max1:
        dic1[key]=dic[key]
for i,j in dic1.items():
    print("%s %d"%(i,j))

3.レストランサービス評価

【問題解説】 10名の学生にレストランの料理とサービスの質を評価してもらい、点数を1から9までの9段階に分けたとする(1が最低点、9が最高点)。ケータリング サービスの品質に関する調査結果を出力します。

【入力フォーム】 1行入力、1~9までの整数を10個入力、各整数はスペース区切り

[出力形式] 各行に 2 つの数字 (セパレータはスペース) を 9 行出力し、1 つはレベルを示す 1 から 9 までの整数、もう 1 つはそのレベルに対応する投票数です。

【入力例】

    1 2 3 3 3 2 2 7 8 9

【出力例】

    1 1

    2 3

    3 3

    4 0

    5 0

    6 0

    7 1

    8 1

    9 1

【記述例】
【採点基準】

10.00

lis=list(map(int,input().split()))
dic={
    
    }
for i in range(1,10):
    dic[i]=0
for num in lis:
    dic[num]+=1
for i in range(1,10):#range函数也是前开后壁的
    print("%d %d"%(i,dic[i]))

4.違いを見つける

【問題解説】

      9个同学一起做游戏,每个人报一个[1,20]区间上的正整数,请你编程求出有多少个不同的数。

【入力フォーム】

    输入1行,输入9个[1,20]区间上的整数,每个整数之间以空格为分隔符

【出力フォーム】

    输出1个数,表示输入的9个数中不同数的个数。

【入力例】

    1 2 3 3 2 2 7 8 9

【出力例】

    6

【記述例】 文字列のsplit()メソッドを使って、文字列を指定した文字列に分割できる
【採点基準】

lis=list(map(int,input().split()))
lis1=[]
for i in lis:
    if i not in lis1:
        lis1.append(i)
print(len(lis1))

5.リーダーは何回登場しますか

【問題解説】

Tao Tao は最近図書館の管理を担当しており、読者の毎日の訪問を記録する必要があります。各リーダーには番号があり、各レコードはリーダーの番号で表されます。読者の訪問記録を考慮して、各記録の読者が何回出現するかを尋ねます。

【入力フォーム】

入力の最初の行には、Taotao のレコード数を表す整数 n が含まれています。

2 行目には n 個の整数が含まれており、これは Taotao の記録にある各読者の数を表しています。

【出力フォーム】

スペースで区切られた n 個の整数を含む行を出力します。これは、各レコード内のリーダー番号の出現回数を示します。

【入力例】

5

1 2 1 1 3

【出力例】

1 1 2 3 1

n1=int(input())
lis=list(map(int,input().split()))
dic={
    
    }
for num in lis:
    if num in dic:
        dic[num]+=1
        print(dic[num],end=' ')
    else:
        dic[num]=1
        print(dic[num],end=' ')

6. 割り切れる問題

  1. 結論は次のとおりです: 整数の奇数の合計と偶数の合計の差が 11 で割り切れる場合、この数は 11 で割り切れます。例として 123456、奇数桁の合計は 6+4+2=12、偶数桁の合計は 5+3+1=9)

上記の結論を利用してn桁の正の整数を任意に与え、奇数桁の桁数の和と偶数桁の桁数の和を出力し、11個の整数に割り切れるかどうかを判断してください。

【入力フォーム】

正の整数を任意に入力します。

【出力フォーム】

奇数ビットと偶数ビットの和を順に出力し、11で割り切れるかどうかの最終判定を出力します。

【入力例】

整数を入力してください:654321

【出力例】

9

12

間違い

【記述例】 FALSEまたはTRUEを出力
【採点基準】

n=input("Please input a integer:")
num1=num2=0
a=len(n)
i=1
while a:
   if i%2==0:
       num2+=int(n[a-1])
   else:
       num1+=int(n[a-1])
   i = i + 1
   a = a - 1
print("%d\n%d"%(num1,num2))
if (num1-num2)%11!=0:
    print("FALSE")
else:
    print("TRUE")

7.要因を見つける

【問題解説】

1 より大きい整数を入力すると、その整数を割り切れるすべての因数 (1 とそれ自体を除く) を含むリストが返され、小さいものから大きいものへと並べ替えられます。数値が素数の場合、「(整数) は素数です」と出力します。
【入力例】

number:6
[サンプル出力]

[2、3]

【入力例】

number:5
[出力例]

5が素数

n=int(input("number:"))
lis=[]
for i in range(2,n-1):
    if(n%i==0):
        lis.append(i)
if lis==[]:
    print("%d is prime"%(n))
else:
    print(lis)

8.パスワードを翻訳する

【問題説明】 パスワードを翻訳してください。機密保持のために、平文は使用されないことが多く、暗号文が使用されます。つまり、ある規則に従って文字が別の文字に変換され、受信者は逆の規則に従って元の文字を変換します。このプログラムのルールは次のとおりです。文字のアスキー コードに 5 を追加し、他の文字はそのままにして、元のテキストを暗号化し、暗号化されたテキストを表示します。最後の 5 文字と 5 文字は文字ではなく、処理規則は最初の 5 文字に循環することです。たとえば、「X」の暗号文は「C」です。

【入力例】

テキストを入力してください: I love haha​​.
[出力例]

N qtaj mfmf.

【記述例】 ord()関数は主に対応する文字のアスキーコードを返すために使用され、chr()は主にアスキーコードに対応する文字を表すために使用されます

【グレーディング】

n=input("please input text:")
lis=[]
for i in  range(len(n)):
    x=ord(n[i])
    if 97 <= x <= 117:
        lis.append(chr(x+5))
    elif 117 < x <= 122:
        lis.append(chr(97+5-(122-x+1)))
    elif 65<=x<=85:
        lis.append(chr(x + 5))
    elif 85<x<=90:
        lis.append(chr(65+5 - (90 - x + 1)))
    else:
        lis.append(n[i])
lis1=''.join(lis)
print(lis1)

9. 最大積による分解

[問題説明] キーボードから正の整数 n (n>1) を入力すると、2 つの正の整数 k1 と k2 の和に分解できます (k1 と k2 は等しくなります)。2 つの正の整数の積を最大化する分解スキームを見つける関数を作成し、積の最大値を返します。
[入力形式] 標準入力の行は、正の整数 n を示します
[出力形式] 標準出力の行は、最大積 max を示します。入力データが不正 (負の整数、0 または 1 など) の場合、"不正な入力"。
[サンプル入力] 20
[サンプル出力] 100
[サンプル記述] 20=10 + 10、積はこの時点で最大の 100 です。

n=int(input())
if n<=1:
    print("illegal input")
else:
    max1=0
    for i in range(1,n):
        j=n-i
        if i*j>=max1:
            max1=i*j
    print(max1)

10.シャオユウが泳ぐ

【問題解説】

    小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游2米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的98%。现在小玉想知道,如果要游到距离x米的地方,她需要游多少步呢。请你编程解决这个问题。

【入力フォーム】泳ぐ目標距離を示す数字(100m未満の整数である必要はありません)を入力してください。.

[出力形式] Xiaoyu が合計で何歩泳ぐ必要があるかを示す整数を出力します。.

【サンプル入力】4.3

【サンプル出力】3

【記述例】
【採点基準】

n=float(input())
n1=0
while 100*(1-0.98**n1)<n:
    n1=n1+1
print(n1)

宿題 2: 関数

1. リストに重複する要素があるかどうかを判断する

整数の配列を指定して、重複する要素があるかどうかを確認します。
配列内に少なくとも 2 回出現する値がある場合、関数は
trueを返します。
配列内のすべての要素が異なる場合は falseを返します。

1:
入力: [1, 2, 3, 1]
出力: true

2:
入力: [1, 2, 3, 4]
出力: false

3:
入力: [1, 1, 1, 3, 3, 4、3、2、4、2]
出力: true

def exitsamenum(nums):
    for i in range(len(nums)):
        for j in range(i + 1, len(nums)):
            if nums[i] == nums[j]:
                return True
    return False
nums = eval(input())
print(exitsamenum(nums))

2. 友達を探す

def sushu(n):
    for i in range(2,n):
        if n%i==0:
            return False
    return True
a = eval(input())
result = 'JH'
for i in range(2,a):
    if sushu(i) and a%i==0:
        if sushu(a//i):
            result += (str(a//i)+str(i))
            print(result)
            break
else:
    print('error')

3. 合計で 3 がいくつ出たか数えます

[問題解説] 1からこの数字の奇数列までの任意の正の整数を入力し、全部で3がいくつあるか数えてください。
関数 sumThree() を書きます.この関数は、正の整数を入力し、数値内の 3 の出現回数を返します。
[入力フォーム]
[出力フォーム]
[サンプル入力]
number:25
[サンプル出力]
3

n=int(input('number:'))
x=list(range(1,n+1,2))
x=str(x)
num=x.count('3')
print(num)

4. ループと機能 – 親密な数字

問題解説】
整数 n 以内(n を含む)の親密度数をすべて求めよ。
説明: 正の整数 A (1 を含み、A 自体を除く) のすべての因数の合計が B に等しく、正の整数 B (1 を含み、B 自体を除く) のすべての因数の合計が A に等しい場合、 A が B と等しくない場合、正の整数 A と B は近接数と呼ばれます。
1 は他の数と親密な数を形成しません。
関数 sumElem() を記述して、数値 (1 を含み、A 自体を除く) の約数の合計を
実現
ます親密度の各ペアは、小さい方から順に 1 回だけ出力されます。親密度番号の各ペアは順番に並べ替えられ、親密度番号は小さなものから大きなものへと並べ替えられます。【サンプル入力】3000 【サンプル出力】220 284 1184 1210 2620 2924









def fac(a):
    j = 0
    for i in range(1, a):
        if a % i == 0:
            j += i
    return j
n=int(input())
for i in range(2, n + 1):
    r = fac(i)
    if r > i and r <= n and fac(r) == i:
        print('{a} {b}'.format(a=i, b=r))

5. 場所は暗号化されていますか?

【不具合内容】
乱数ライブラリをインポートして乱数を生成する際に、固定シード(10)を設定してください。
位置コードをランダムに生成して、指定された文字列の元のコードを暗号化します。たとえば、元のコード: 010512 の場合、位置コードは 1 ~ 6 の 6 つの数字からランダムに生成された一連の数字: 362415 であり、位置コードの生成は元のコードの長さ L に依存し、各ビットは繰り返されません。位置コードに従って元のコードの順序を調整し、暗号化された結果を取得します: 021501、元のコードの 3 桁目の 0 を暗号化された 1 桁目に入れ、元のコードの 6 桁目の 2 を暗号化された 2 桁目に入れます。そのアナロジー。
注: サンプルが元のコード位置コード 123456 をスクランブルするときにランダム ライブラリでサンプル メソッドと選択メソッドを使用する場合、結果と一貫性を持たせるために、逆メソッドを使用してリストの順序を逆にする必要があります。シャッフルを使用するときは順序を逆にする必要があります。
[入力例
010512
[出力例]
362415
021501
[記述例]
長さが 10 未満の文字列を入力し、元のコード文字列 s に従って関数 posCode(s) を記述し、対応する長さの位置コードを生成して返す戻り値としてそれ。
元のコード文字列 s と位置コード posCode に従って、位置コードに応じて元のコードを暗号化された文字列に変換する関数 changeCode(s、posCode 関数の戻り値) を記述し、それを戻り値として返す【採点基準

10.00

def posCode(s):
    l=len(s)
    lis = [x for x in range(1, l + 1)]
    random.shuffle(lis)
    # s=""
    # for i in lis:
    #     s+=str(i)
    s="".join(str(e) for e in lis)#简化
    return s

def changeCode(s,lis):
    l=len(s)
    # str=""
    # h = [0 for x in range(l)]#迭代器分配空间,否则会报错IndexError: list assignment index out of range
    # # h=[]
    # for i in range(l):
    #     h[i] = s[int(lis[i]) - 1]
    #     str+=h[i]
    str="".join(s[int(lis[i])-1] for i in range(l))
    return str
import random
random.seed(10)
s=input()
p=posCode(s)
print(p)
print(changeCode(s,p))

6. 電話コードを抽出する

電話番号のパターンが、3 桁、ダッシュ、4 桁、ダッシュ、4 桁であるとします。例: 186-7123-4567
writes the isPhoneNum() function to check whether the string matches the phone number pattern, and returns True if it match, not returns False.
プログラムの機能は、部分から電話番号を抽出することですテキストの。コードの一部は次のとおりです: message='Call me
at 186-7123-4567 明日. 027-8728-1235 は私のオフィスです
.
13]
if isPhoneNum (chunk):
print('見つかった電話番号: ' +chunk)
print('Done')

def isPhoneNum(str):
    for i in range(len(str)):#遍历字符串的方法
        if(((i==3)or(i==8)) and (str[i]!='-')):
            return False
        elif((i!=3)and(i!=8)and ((ord(str[i])>57 )or( ord(str[i])<48))):
            return False
    return True

message='Call me at 186-7123-4567 tomorrow. 027-8728-1235 is my office. '
for i in range(len(message)):
    chunk=message[i:i+13]
    if isPhoneNum(chunk):
        print('Phone number found: ' +chunk)
print('Done')

7. ユーザーが入力した日付に基づいて日数を計算します

【問題解説】
うるう年かどうかを判定する関数isLeap(年)を書き、うるう年ならTrue、うるう年ならFalseを返す。
年が位置する月の日数を計算する関数 days(year,month) を記述します. days(year,month) 関数は isLeap() 関数を呼び出して 2 月の日数を決定するのに役立てる必要があります (その年がうるう年でない場合は 28 を返し、そうでない場合は 29 を返します ) プログラムは、ユーザーが入力した日付に従って年の日付を計算する必要があります。
【入力フォーム】
特定の日付を入力(形式は年月日)
【出力フォーム】
日付は年間通算日
【入力例】
2019/3/18
【出力例】
77
【記述例】 】
【採点基準】

#-*-coding:gb2312-*-
from _datetime import datetime
def isL(year):
    if((year%400==0) or((year%4==0)and(year%100!=0))):
        return True
    else:
        return False
def days(year,month):
    day=0
    j1={
    
    1,3,5,7,8,10,12}
    j2={
    
    4,6,9,11}
    for i in range(1,month):
        if i in j1:
            day+=31
        elif i in j2:
            day+=30
        else:
            if(isL(year)):
                day+=29
            else:
                day+=28
    return day
str=input()
# print(str)
str1=datetime.strptime(str,'%Y/%m/%d')
day=days(str1.year,str1.month)+str1.day
print(day)
# 2000/9/1

課題 3 (ドキュメント)

ファイル - 足し算と引き算

【問題解説】

ファイル jisuan.txt から任意の数の行を読み取ります。各行には、2 つのオペランドを含む加算式または減算式が含まれています。プログラムは、各行の計算式を分析して計算を完了し、計算結果を jieguo.txt に 1 行に 1 つずつ書き込みます。
【入力フォーム】

ファイルの各行は、2 つのオペランドを含む加算式または減算式です。数式にスペースがありません
[出力形式]

ファイル、1 行に 1 つの結果。結果は小数点第 2 位まで四捨五入されます。
【入力例】

入力ファイルの内容:

1+2

5-2.3

6+0.8

【出力例】

出力ファイルの内容:

3.00

2.70

6.80

#-*- coding:gb2312 -*-
with open('jisuan.txt','r',encoding='utf-8') as f1:
    expresses = f1.readlines()
    with open('jieguo.txt','w',encoding='utf-8') as f2:
        for exp in expresses:
            print(exp)
            f2.write("%.2f"%eval(exp))
            f2.write('\n')
            print("%.2f"%eval(exp))

ファイル注釈スケール

【問題解説】
良いプログラムには一定の割合のコメントが必要です。C ソース ファイルのコメントの割合をカウントするプログラムを作成します。このパーセンテージは、プログラム コメントの合計文字数 ( //を除くすべての文字) をプログラム ファイルの合計文字数 (プログラム ファイルのすべての文字) で割って計算されます。

注: /* */ 内のコメントのみが考慮され、クロスライン コメントを考慮する必要があります。文字列の部分文字列としての /または/ など、// の先頭にある行コメントなど、他のケースを考慮しないでください。
【入力形式】
カレントディレクトリにあるソースプログラムファイル filein.c から入力を取得します。
【出力形式】
コメントの割合をコンソールに出力します。割合は小数点以下を含まず(小数点以下は切り捨て、切り上げは行いません)、その後に%記号を付けます。

f=open("filein.c")
ans=0
s="".join(i for i in f.readlines())
for i in range(0,len(s)):
    if s[i]=="/" and s[i+1]=='*':
        while s[i+2]!="*"and s[i+3]!='/':
            ans+=1
            i+=1
print("{}%".format(int(100*ans/len(s))))

文書組版 22

【問題説明】
英語映画の俳優一覧は、一般的にある表示方法で表示されます。非植字ファイル listin.txt を指定すると、ファイル内のアクターのリストの各行はコロン ':' で 2 つの部分に分けられますが、形式は乱雑で、単語 (スペースと水平タブ コンポーネント以外の文字で構成されます) ) は、複数のスペースまたは水平タブで区切ることができます。次のタイプセット規則に従って、タイプセットして別のファイル listout.txt に出力する必要があるプログラムを作成します。

1. 植字後の各行のコロン ':' の固定位置として標準入力から整数を読み取ります; 入力整数が植字後のすべての行のコロン ':' の前の文字数よりも大きくなければならないと仮定すると、位置は 1 カウントから始まります。

2. コロン ':' の左側の単語列は、コロンに基づいて右揃えされ、左側の最初の単語の前に余分なスペースがある場合はスペースで埋められます。コロン ':' の右側はコロン ':' に基づいています 左揃え、最後の単語の後にはキャリッジ リターンとライン フィードのみ、その他の文字はありません 3. 単語の左右の単語の間には 1 つのスペースしかありませ
んコロン「:」、およびコロンの両側の単語を区切るためにスペースが必要です。
入力ファイルの 1 行あたりの文字数が 100 を超えないとします。
[入力形式]
タイプセットするアクターのリストは、カレントディレクトリの listin.txt ファイルから読み込み、コロン ':' の位置を表す整数を標準入力から読み込みます。
[出力形式]
タイプセットされたアクターのリストは、カレントディレクトリの listout.txt に出力されます。

#-*-coding:gb2312 -*-
n1 = int(input())
with open('listin.txt', 'r') as f:
    l3 = []
    for i in f:
        n = i.find(':')
        l1 = ' '.join(i[:n].split())
        print(l1)
        l2 = ' '.join(i[n + 1:].split())
        l3.append(l1.rjust(n1, ' ') + ' : ' + l2)
with open('listout.txt', 'w') as f:
    for i in l3:
        f.write(i + '\n')

学生の成績換算

【問題解説】 d1.txtd1.txtファイルを読み込み、各行のデータに学籍番号と成績の2つの情報が含まれており、成績を5段階に変換して学籍番号順に降順に並べ替え、受験者番号と成績を画面に出力し、1スペース間隔で不合格者数をファイルd2.txtに書き込みます。

【出力例】

2D

3B

4D

5A

7 イー

8A

10℃

11C

14B

【記述例】
【採点基準】

with open("d1.txt",'r') as f1:
    dict1={
    
    }
    num=0
    with open("d2.txt",'w') as f2:
        for i in f1:
            k2,k1=i.split()
            k1=eval(k1)
            k2=eval(k2)
            if 90 <= k1:
                dict1[k2] = 'A'
            elif 80 <= k1 < 90:
                dict1[k2] = 'B'
            elif 70 <= k1 < 80:
                dict1[k2] = 'C'
            elif 60 <= k1 < 70:
                dict1[k2] = 'D'
            else:
                dict1[k2] = 'E'
                num+=1
        f2.write(str(num))
        #按键进行排序
        l=list(dict1.keys())
        l.sort()
        for i in l:
            print("{} {}".format(i,dict1[i]))

映画の選択

【問題説明】
カレントディレクトリにmovie.txtというファイルがあり、ファイル内にはNo Name Year Country Score Lastingを含む6列のデータがあり、それぞれシリアル番号、映画名、公開年、国、評価、映画の長さ。Li Hua は、90 分未満 (90 分を含む) の映画のみを見たいと考えています。彼が条件を満たす映画のシリアル番号を選択するのを助けるプログラムを書いてください。1 行でシリアル番号が出力され、ファイル out.txt に書き込まれます。

鼠标右击以下文件,选择“另存为”把文件保存至本地硬盘中。        

    movie.txt

【入力例】

なし

【出力例】

6

7

8

9

ここにはリストしませんが、他にもたくさんあります。

with open("movie.txt",'rt') as f1:
    k=0
    with open("out.txt",'w') as f2:
        for i in [line.strip() for line in f1.readlines()]:
            if k>0:
                if int(i.split()[5])<=90:
                    f2.write(i.split()[0]+'\n')
                    print(int(i.split()[0]))
            k+=1

コピー固有の文字列を検索

【問題解説】

実現するプログラムを書いてください: キーボードから整数 n を入力してください。ファイル「in.txt」から n 行を読み込み、文字 A で始まる行を標準出力に出力します (ここの画面を参照)。
【入力フォーム】

从键盘输入整数n;
文件输入的第1至n行的每一行构成一个字符串。

【出力フォーム】

标准输出的每一行是字母A开头的行。若未找到符合条件的字符串,则输出"not found";若输入数据不合法(指n为小数或负数)则输出"illegal input"。

【入力例】

  键盘输入:      5

  文件输入:
        hello world
        An apple
        hello C++
        A man
        a program

【出力例】

        An apple
        A man
#-*-coding:gb2312 -*-
n=eval(input())
if type(n)==int:
    with open("in.txt",'r') as f1:
        k=m=0
        for i in f1.readlines():
           if k<n and i[0]=='A':
                m+=1
                print(i)
           k+=1
    if m==0:
        print("not found")
else:
    print("illegal input")

課題4以降の課題は全て実技で書類提出が必要ですが、文学部以外の方は提出不要のようです 必要な方はコメントをフォローして退出してくださいメッセージ!宿題 4 ~ 10 の圧縮パッケージをお送りします。さらに必要な場合は、整理する時間があります。

課題 4: オブジェクト指向プログラミング

  1. プログラミングの実装: データ メンバーの魚番号 fid、魚の名前 fname、およびメソッド メンバーの live() を含む魚の魚を設計します。

メソッド メンバーの出力例: 'コイ: 私の国に分布し、川や湖に生息しています。'

  1. プログラミングの実装: 魚を継承する淡水魚を設計し、独自のデータ メンバに生活習慣 fhabit を追加し、

method メンバーは fish メソッド メンバーを継承し、次のような情報出力の例を追加します。草食性の魚です。'

宿題 5: ファイル操作

1. プログラミングの実装: テキスト ファイル fish.txt を作成し、淡水魚 ['コイ'、'グラス コイ'、'フナ'、'ビッグヘッド コイ'、'パーチ'] のリストをファイルに 1 行ずつ書き込みます。時間、

次に、テキスト ファイル データを読み取り、表示用に出力します。

2. プログラミングの実装: テーブル ファイル Excel.xlsx を作成し、淡水魚辞書 {'f1': ['carp', 'omnivorous'], 'f2': ['grass carp', '草食'],' を配置します。 f3':['フナ','温水'],'f4':['ビッグヘッド','温水'],'f5':['黒魚','肉食']}行 このファイルでは、

次に、テーブル ファイル データが出力および表示用に読み取られます。

課題 6: データベースプログラミング

1. プログラミングの実装: sqlite3 を使用して淡水魚データベース fish.db を作成し、淡水魚データ テーブル tfish を作成します。

魚の番号、魚の名前、魚の習性をそれぞれ表すテーブル構造 tfish(fid, fname, fhabit) を設計します。

5 種類の淡水魚の既知のデータは次のとおりです。

「f1」、「コイ」、「雑食性」

「f2」「草食性」「草食性」

「f3」「フナ」「ぬるま湯」

「f4」、「ビッグヘッドコイ」、「ぬるま湯」

「f5」、「黒魚」、「肉食性」

これら 5 つの淡水魚データ レコードを sqlite3 データベースに格納し、1 つずつ出力して表示する必要があります。

2. プログラミングの実装: mysql を使用して淡水魚データベース fish を作成し、淡水魚データ テーブル tfish を作成します。

魚の番号、魚の名前、魚の習性をそれぞれ表すテーブル構造 tfish(fid, fname, fhabit) を設計します。

既知の淡水魚5種のデータ内容は上記と同じです。

この5つの淡水魚データをmysqlデータベースに格納し、1つずつ出力・表示する必要があります。

課題 7: データ分析:

1. プログラミングの実装: pandas の DataFrame を使用して、次の淡水魚データを行番号 (デフォルトの番号番号)、および列番号 (魚の番号、魚の名前、習性、生産) に割り当てます。

既知の淡水魚データ

データ = [

['f1','鲤鱼','杂食性',300],

['f2','草鱼','食草性',240],

['f3','鲫鱼','温水性',500],

['f4','鳙鱼','温水性',400],

['f5','黑鱼','肉食性',480],

]

2. プログラミングの実装: 上記の淡水魚データの魚名と生産データの折れ線グラフを使用して、淡水魚の生産統計グラフを生成します。

課題 8: Web クローラー:

1. プログラミングの実装: リクエスト クローラー ライブラリと json 解析ライブラリを使用して、流行データをクロールします。

既知:

(1) クロール URL:

url='https://api.inews.qq.com/newsqa/v1/query/inner/publish/modules/list?modules=statisGradeCityDetail,diseaseh5Shelf'

(2) クロール認証:

ヘッダー={

'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'

}

(3) クロール分析:

json_data = response.json()['data']['diseaseh5Shelf']['areaTree'][0]['children']

  1. プログラミングの実装: xlrd ライブラリを使用して、上記のクロールされたデータ (「領域」、「新規診断」、「治癒数」、「死亡数」、「既存数」、「累積確定症例」) を Excel ファイルに保存します。

  2. プログラミングの実装: xlwt ライブラリを使用して、上記の Excel ファイルの「地域」と「新規診断」の 2 つの列データを読み取り、matplotlib ライブラリの折れ線グラフを使用して、これら 2 つのデータを視覚化します。

課題 9: GUI プログラミング:

Python作业9-GUI编程

1. プログラミングの実装: GUI プログラミングに tkinker を使用すると、グラフィカル インターフェイスに次の淡水魚データが表示されます。

既知の淡水魚データ

データ = [

['f1','鲤鱼','杂食性',300],

['f2','草鱼','食草性',240],

['f3','鲫鱼','温水性',500],

['f4','鳙鱼','温水性',400],

['f5','黑鱼','肉食性',480],

]

課題 10: ウェブ開発:

1. プログラミングの実装: Web 開発にフラスコを使用し、Web ページに次の淡水魚データが表示されます。

既知の淡水魚データ

データ = [

['f1','鲤鱼','杂食性',300],

['f2','草鱼','食草性',240],

['f3','鲫鱼','温水性',500],

['f4','鳙鱼','温水性',400],

['f5','黑鱼','肉食性',480],

]

実験 1:

ハッピーナンバー

【問題解説】
ある数字が「ハッピーナンバー」かどうかを判定するアルゴリズムを書きなさい。「幸せな数」は次のように定義されます。正の整数の場合、その数を毎回各位置の数の 2 乗の和に置き換え、数が 1 になるまでこのプロセスを繰り返すか、無限ループになる可能性があります。しかし、常に 1 未満に変化します。1になれるなら、この数字はハッピーナンバーです。
【サンプル入力】
32
【サンプル出力】
あり
【サンプル入力】
37
【サンプル出力】
なし

#-*-coding:gb2312-*-
a=int(input())
i=b=0
while(a!=1 and i<50):
        while(a/10!=0):
            b+=(a%10)**2
            a=a//10
        a=b
        b=0
        i=i+1
if(a==1):
    print("yes")
elif(i==50):
    print("no")

名前で電話番号を確認する

[問題の説明] 'mayun':'13309283335',​​ 'zhaolong':'18989227822', 'zhangmin':'13382398921', 'Gorge':'19833824743', 'Jordan'
の連絡先で電話帳を定義する:'18807317878', 'Curry':'15093488129', 'Wade':'19282937665'次に、その人の名前を入力し、番号を確認します。【入力形式】人物名は文字列です。【出力形式】電話番号。その人物が存在しない場合は、「見つかりません」を返します[入力例] mayun [出力例] 13309283335















#-*-coding:gb2312-*-
d1={
    
    'mayun':'13309283335',
    'zhaolong':'18989227822',
    'zhangmin':'13382398921',
    'Gorge':'19833824743',
    'Jordan':'18807317878',
    'Curry':'15093488129',
    'Wade':'19282937665'}
s=input()
print(d1.get(s,"not found"))

大学院への入学

【問題解説】大学が大学院生を入学させる要件は、各コースの点数が60点以上、合計点が340点以上で、370点未満は自己資金です。4科目の成績を入力し、入学可否を判断するプログラムを書いてください(「不」、「自費」、「無料」公費の3つの状況があります)。 .
【入力フォーム】
4科目の成績を入力し、成績はすべて0~150の整数です。4コースのスコアを入力する場合、eval()とinput()関数を組み合わせて一度に4つの値を入力し、数字をカンマで区切ることができます 【出力形式】not or pay or free 【
入力


4スコア: 55, 120 , 110, 120
[出力例]
not
[説明例]
[採点基準]

重複する単語をすべて削除する

【問題解説】 空白で区切られた単語列を入力とし、重複する単語をすべて取り除き、英数字順に並べ替えて出力するプログラムを書きなさい。[入力フォーム]
[出力フォーム]
[入力例] hello world and practice makes perfect and hello world again
[サンプル出力] again and hello makes perfect practice world
[サンプル説明]
[採点基準]

#-*-coding:gb2312-*-
word = input().split()
for i in word:
    if word.count(i)>1:
        word.remove(i)
word.sort()
print(*(word))

番号に重複する番号があるかどうかを判断する

【問題説明】
数字を入力し、その数字に重複する数字がないか判定する。1314 のように、繰り返しあり、520 の場合、繰り返しはありません。
【サンプル入力】
1314
【サンプル出力】
あり
【サンプル入力】
520
【サンプル出力】
なし

d={
    
    }
n=input()
for i in range(len(n)):
    d[n[i]]=d.get(n[i],0)+1
    if d[n[i]]!=1:
        print("yes")
        break
else:
    print("no")

求a+aa+aaa+aaaa

【問題解説】 正の整数 a の値を与えて a + aa + aaa + aaaa の値を計算するプログラムを書け. [
入力形式] 9
[出力形式] 11106
[サンプル入力]
[サンプル出力]
[サンプル 例 説明】
【評価基準】

#-*-coding:gb2312-*-
i=int(input())
j=i*10+i
k=j*10+i
m=k*10+i
n=m+k+i+j
print(n)

有効なパスワード

[問題の説明] Web サイトで、ユーザーがユーザー名とパスワードを入力して登録する必要があります。ユーザーが入力したパスワードの有効性をチェックするプログラムを作成します。パスワードをチェックする基準は次のとおりです。

  1. 少なくとも 1 文字 (大文字と小文字の両方に少なくとも 1 文字あります)
  2. 少なくとも 1 つの数字
  3. 少なくとも 1 文字 (つまり、英数字以外)
    4. トランザクション パスワードの最小長: 6 5. トランザクションパスワードの
    最大長: 12
    戻り値は True で、False はパスワードが有効かどうかを示します
    [入力例] aBc123@
    [出力例] True
#-*-coding:gb2312-*-
s1=input()
def vaid(s2):
    if(len(s2)<6 or len(s2)>12):
        return False
    n=j=k=m=0
    for i in range(0,len(s2)):
        if('0'<=s2[i]<='9'):
            n=n+1
        elif('a'<=s2[i]<='z'):
            j=j+1
        elif('A'<=s2[i]<='Z'):
            k=k+1
        else:
            m=m+1
    if((n>0) and(j>0) and(k>0) and(m>0)):
        return True
    else:
        return False
if vaid(s1):
    print("True")
else:
    print("False")

サルが桃を食べる問題

【問題解説】サルが桃を食べる問題:
サルは数個の桃を摘み、初日に半分以上の桃を食べ、その後前日の残りの桃の半分以上を食べた
。実現するプログラム:入力された日数に応じてサルが桃を何個摘んだか計算して出力
[入力フォーム] 入力行は負でない整数で、食べた日数の合計です。
[出力形式] 出力行は桃の総収穫数を示す負でない整数. 入力データが不正(負数や小数など)の場合は「不正なデータ」を出力する.
【サンプル入力】3
【サンプル出力】10
【サンプル入力2】0
【サンプル出力2】0

a = input()
k = 1
for i in a[::]:
    if i == '.' or i == "-":
        k = 0
        print("illegal data")
if k == 1:
    b = int(a)
    if b == 0:
        print(0)
    else:
        n = 1
        while b > 1:
            n = (n+1)*2
            b = b-1
        print(n)

パイソンボールバウンス

問題の説明]
ボールが高所から落下すると、着地するたびに元の高さの 4 分の 1 に跳ね返り、落下することが知られています。プログラムを作成し、整数 n と m をキーボードから入力し、ボールが m 回目に着地したときの移動距離の合計と、ボールが n メートルの高さから m 回目に落ちた後の跳ね返りの高さを計算し、結果を出力します。
【入力フォーム】
整数 n と m をキーボードから入力します。
[出力形式]
2 行出力、
1 行目は総距離を小数点以下 2 桁で出力、
2 行目は m 回目の着地後のバウンド高さを小数点以下 2 桁で出力。
【入力例】
10
3
【出力例】
16.25
0.16

#-*-coding:gb2312-*-
n=int(input())
m=int(input())
sum=n
sum1=0
for i in range(0,m):
    n+=sum1*2
    sum=0.25*sum
    sum1=sum
print(round(n, 2))
print(round(sum, 2))

韓信が軍隊を指す

【問題説明】
n個以下の兵隊がいる。韓信は3人で並んで残りの2人、5人で並んで1人残して、7人で並んで数列。兵士の数を数えるプログラムを書いてください。
(ヒント: 問題を解決するには、網羅的な方法を使用できます。人数の上限が比較的大きい場合は、結果が複数になるため、すべてをリストする必要があります。) [入力フォーム]
人数
上限limit n
[出力形式]
兵士数
[入力例]
60
[出力例]
56
[入力例]
300
[出力例]
56 161 266

#-*-coding:gb2312-*-
n=int(input())
for i in range(1,n+1):
    if (i%3==2) and (i%5==1) and(i%7==0):
        print(i,end=" ")

実験2

実験3

実験4

Guess you like

Origin blog.csdn.net/m0_63388363/article/details/125967274