著者:RichardFu123
https://github.com/RichardFu123/Python100Cases
元の質問アドレス: http:// www.runoob.com / python / python-100-examples.html
、元の例はpy2.7バージョンであり、それらの多くは書き換えプロセス中に自由に再生でき、実行中のバージョンが書き換えられます:Python3.7。
質問: 4つの番号があります:1、2、3、4。繰り返し番号なしでいくつの異なる3桁の番号を形成できますか?それぞれは何ですか?
**プログラム分析:**すべての可能性を横断し、重複を取り除きます。
total=0for i inrange(1,5):for j inrange(1,5):for k inrange(1,5):if((i!=j)and(j!=k)and(k!=i)):print(i,j,k)
total+=1print(total)
簡単な方法: itertoolsで順列を使用します。
import itertools
sum2=0
a=[1,2,3,4]for i in itertools.permutations(a,3):print(i)
sum2+=1print(sum2)
**トピック:**企業が発行するボーナスは、利益手数料に基づいています。利益(I)が10万元以下の場合、ボーナスは10%増額できます。利益が10万元以上の場合、利益が20万元未満の場合、10万元未満の部分は10%の手数料となり、10万元以上となります。手数料は7.5%、200,000〜400,000元の部分は5%、400,000〜600,000元の部分は3%の手数料がかかります。 ; 60万〜100万元の場合、60万元以上の部分は1.5%、100万元以上の場合は1%で委託できます。キーボードから月額利益Iを入力してお願いします。配布されたボーナスの総数は?
**プログラム分析:**間隔で計算します。
profit=int(input('Show me the money: '))
bonus=0
thresholds=[100000,100000,200000,200000,400000]
rates=[0.1,0.075,0.05,0.03,0.015,0.01]for i inrange(len(thresholds)):if profit<=thresholds[i]:
bonus+=profit*rates[i]
profit=0breakelse:
bonus+=thresholds[i]*rates[i]
profit-=thresholds[i]
bonus+=profit*rates[-1]print(bonus)
**質問:**整数。100を加算すると完全な二乗数になり、168を加算すると完全な二乗数になります。数値は何ですか。
プログラム分析: 168は指数関数的爆発には小さすぎるため、数学分析を直接省略し、最も簡単な方法を使用して上限を取得できます。
n=0while(n+1)**2-n*n<=168:
n+=1print(n+1)----------85
最悪の結果は、nの2乗が(n + 1)の2乗と正確に168異なることです。2乗の関係のため、これより大きなギャップを持つことは不可能です。完全な二乗数であるかどうかを判断する場合、最も簡単な方法は次のとおりです。二乗根の値は0の小数にすることができます。組み合わせ:
n=0while(n+1)**2-n*n<=168:
n+=1for i inrange((n+1)**2):if i**0.5==int(i**0.5)and(i+168)**0.5==int((i+168)**0.5):print(i-100)
**トピック:**特定の日、特定の月、特定の日を入力します。その年の日はどれですか。
**プログラム分析:**特別な状況では、飛躍する年に2月の追加日を検討する必要があります。
def isLeapYear(y):return(y%400==0or(y%4==0 and y%100!=0))
DofM=[0,31,28,31,30,31,30,31,31,30,31,30]
res=0
year=int(input('Year:'))
month=int(input('Month:'))
day=int(input('day:'))ifisLeapYear(year):
DofM[2]+=1for i inrange(month):
res+=DofM[i]print(res+day)
質問: 3つの整数x、y、zを入力してください。これらの3つの数値を小さいものから大きいものまで出力してください。
**プログラム分析:**手を練習する場合は、それを実装するための並べ替えアルゴリズムを見つけるだけです。怠惰な場合は、関数を直接調整するだけです。
raw=[]for i inrange(3):
x=int(input('int%d: '%(i)))
raw.append(x)for i inrange(len(raw)):for j inrange(i,len(raw)):if raw[i]>raw[j]:
raw[i],raw[j]=raw[j],raw[i]print(raw)
raw2=[]for i inrange(3):
x=int(input('int%d: '%(i)))
raw2.append(x)print(sorted(raw2))
**件名:**フィボナッチシーケンス。
**プログラム分析:**フィボナッチシーケンス(フィボナッチシーケンス)、1、1から始まり、後ろの各アイテムは前の2つのアイテムの合計に等しくなります。グラフの利便性のための再帰的な実装、およびグラフのパフォーマンスのためのループ。
# 再帰的な実装
def Fib(n):return1if n<=2elseFib(n-1)+Fib(n-2)print(Fib(int(input())))
# 素朴な実現
target=int(input())
res=0
a,b=1,1for i inrange(target-1):
a,b=b,a+b
print(a)
**タイトル:**あるリストから別のリストにデータをコピーします。
**プログラム分析:**リスト[:]を使用してください。不明な場合は、コピーモジュールを呼び出すことができます。
import copy
a =[1,2,3,4,['a','b']]
b = a #割り当て
c = a[:] #浅いコピー
d = copy.copy(a) #浅いコピー
e = copy.deepcopy(a) #ディープコピー
a.append(5)
a[4].append('c')print('a=',a)print('b=',b)print('c=',c)print('d=',d)print('e=',e)============ RESTART: F:\PyWorkspace\Python100\100examples\007.py ============
a=[1,2,3,4,['a','b','c'],5]
b=[1,2,3,4,['a','b','c'],5]
c=[1,2,3,4,['a','b','c']]
d=[1,2,3,4,['a','b','c']]
e=[1,2,3,4,['a','b']]
**質問:**出力9 * 9乗算式テーブル。
**プログラム分析:**行と列を考慮して、合計9行と9列、i制御行、j制御列。
for i inrange(1,10):for j inrange(1,i+1):print('%d*%d=%2ld '%(i,j,i*j),end='')print()
**件名:**出力を1秒間一時停止します。
**プログラム分析:**タイムモジュールのsleep()関数を使用します。
import time
for i inrange(4):print(str(int(time.time()))[-2:])
time.sleep(1)
**タイトル:**出力を1秒間一時停止し、現在の時刻をフォーマットします。
プログラム分析: 009と同じ。
import time
for i inrange(4):print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
time.sleep(1)
**トピック:**ウサギのペアがあります。生後3か月目から、毎月1組のウサギが出産します。小さなウサギは、3か月目以降、毎月1組のウサギが出産します。ウサギが死んでいない場合は、それぞれに質問してください。 1か月のウサギの総数はいくつですか?
プログラム分析: 3か月での成熟度の問題を考慮せずに、元の解決策は少し冗談だと思いますが、人や赤ちゃんはどのように出産しますか? 3か月の成熟を考慮すると、4つのデータを作成できます。その中で、1月のウサギは成長して毎月2月のウサギになり、2月のウサギは3月のウサギになり、3月のウサギは年次ウサギになり、成体のウサギ(新しく成熟したウサギを含む)になります。 3月のウサギ)は同じ数の1月のウサギを産みます。
month=int(input('繁殖するのに何ヶ月? :'))
month_1=1
month_2=0
month_3=0
month_elder=0for i inrange(month):
month_1,month_2,month_3,month_elder=month_elder+month_3,month_1,month_2,month_elder+month_3
print('最初%合計dか月'%(i+1),month_1+month_2+month_3+month_elder,'ウサギへ')print('その中で、1月のウサギ:',month_1)print('それらの中で、2月のウサギ:',month_2)print('その中で、マーチラビット:',month_3)print('そのうち成体のウサギ:',month_elder)
質問: 101から200までの素数の数を決定し、すべての素数を出力します。
**プログラム分析:**素数の判断方法:2からsqrt(数)までの数を割ります。割り切れる場合は素数ではないことを意味し、そうでない場合は素数です。
import math
for i inrange(100,200):
flag=0for j inrange(2,round(math.sqrt(i))+1):if i%j==0:
flag=1breakif flag:continueprint(i)print('\nSimplify the code with "else"\n')for i inrange(100,200):for j inrange(2,round(math.sqrt(i))+1):if i%j==0:breakelse:print(i)
**トピック:**すべての「水仙番号」を印刷します。いわゆる「水仙番号」とは、立方体の合計が番号自体と等しい3桁の番号を指します。例:153 = 1キューブ+5キューブ+3キューブであるため、153は「水仙番号」です。
プログラム分析: forループを使用して100〜999の数値を制御すると、各数値は単位、数十、数百に分解されます。
for i inrange(100,1000):
s=str(i)
one=int(s[-1])
ten=int(s[-2])
hun=int(s[-3])if i == one**3+ten**3+hun**3:print(i)
**質問:**整数を主因子に分解します。例:90を入力し、90 = 2 * 3 * 3 * 5を出力します。
**プログラム分析:**それが素数であるかどうかを判断する必要はまったくありません.2から始まり、数自体をトラバースして、最小の素数は割り切れる必要があります。
target=int(input('整数を入力してください:'))print(target,'= ',end='')if target<0:
target=abs(target)print('-1*',end='')
flag=0if target<=1:print(target)
flag=1while True:if flag:breakfor i inrange(2,int(target+1)):if target%i==0:print("%d"%i,end='')if target==i:
flag=1breakprint('*',end='')
target/=i
break
**トピック:**条件付き演算子のネストを使用して、この質問を完了します。学業成績が90ポイントを超える学生は、Aで表され、スコアが60〜89の学生はBで表され、スコアが60未満の学生はCで表されます。
**プログラム分析:**条件付き判断を使用してください。
points=int(input('スコアを入力してください:'))if points>=90:
grade='A'
elif points<60:
grade='C'else:
grade='B'print(grade)
**タイトル:**指定された形式で日付を出力します。
**プログラム分析:**日時モジュールを使用します。
import datetime
print(datetime.date.today())print(datetime.date(2333,2,3))print(datetime.date.today().strftime('%d/%m/%Y'))
day=datetime.date(1111,2,3)
day=day.replace(year=day.year+22)print(day)
**タイトル:**文字の行を入力し、英字、スペース、数字、その他の文字の数を数えます。
プログラム分析: whileまたはforステートメントを使用する場合、条件は入力文字が「\ n」ではないことです。
string=input("入力文字列:")
alp=0
num=0
spa=0
oth=0for i inrange(len(string)):if string[i].isspace():
spa+=1
elif string[i].isdigit():
num+=1
elif string[i].isalpha():
alp+=1else:
oth+=1print('space: ',spa)print('digit: ',num)print('alpha: ',alp)print('other: ',oth)
質問: s = a + aa + aaa + aaaa + aa ... aの値を見つけます。ここで、aは数値です。たとえば、2 + 22 + 222 + 2222 + 22222(この時点で合計5つの数字が追加されます)、およびいくつかの数字の追加はキーボードによって制御されます。
**プログラム分析:**文字列で解決します。
a=input('追加番号:')
n=int(input('何回? :'))
res=0for i inrange(n):
res+=int(a)
a+=a[0]print('結果は次のとおりです。',res)
**質問:**数値がその係数の合計と正確に等しい場合、この数値は「完全な数値」と呼ばれます。たとえば、6 = 1 + 2 +3です。1000以内のすべての完了した番号を検索するプログラム。
**プログラム分析:**要素の各ペアをセットに追加すると、このプロセスで重複が自動的に削除されます。最終結果要求はそれ自体を計算しません。
def factor(num):
target=int(num)
res=set()for i inrange(1,num):if num%i==0:
res.add(i)
res.add(num/i)return res
for i inrange(2,1001):if i==sum(factor(i))-i:print(i)
**質問:**ボールは100メートルの高さから自由に落下し、地面に着くたびに元の高さの半分に跳ね返ります。再び落下すると、10回目の着陸で何メートル通過しますか? 10回目のリバウンドはどのくらいですか?
**プログラム分析:**なし
high=200.
total=100for i inrange(10):
high/=2
total+=high
print(high/2)print('全長:',total)
**トピック:**サルが桃を食べることの問題:サルは初日にいくつかの桃を拾い、すぐに半分を食べましたが、中毒ではなく、もう1つ食べました。翌朝、残りの半分を食べ、さらに食べました。 1。その後、毎朝前日の半分と残り半分を食べました。 10日目の朝にまた食べたいと思ったら、桃が1つしか残っていないのがわかりました。初日に何人が選ばれましたか?
**プログラム分析:**ルールに従った逆推論:サルは桃を持っていて、桃を盗んだ。彼はそれでは不十分だと感じ、合計9日間手に同じ量の桃を盗んだ。
peach=1for i inrange(9):
peach=(peach+1)*2print(peach)
トピック: 2つの卓球チームがそれぞれ3人のプレーヤーで競います。チームAはa、b、cで構成され、チームBはx、y、zで構成されます。一致するリストを決定するために多くのことが描かれています。誰かがプレイヤーにゲームの名簿を求めました。 aはxと比較しない、cはx、zと比較しない、とプログラムして3つのチームのリストを見つけてください。
**プログラム分析:**条件下で繰り返さない3人の対戦相手を見つけます。
a=set(['x','y','z'])
b=set(['x','y','z'])
c=set(['x','y','z'])
c-=set(('x','z'))
a-=set('x')for i in a:for j in b:for k in c:iflen(set((i,j,k)))==3:print('a:%s,b:%s,c:%s'%(i,j,k))
**タイトル:**次のパターン(ダイヤモンド)を印刷します。
* *** ***** ******* ***** *** *
**プログラム分析:**再帰的に呼び出すだけです。
def draw(num):
a="*"*(2*(4-num)+1)print(a.center(9,' '))if num!=1:draw(num-1)print(a.center(9,' '))draw(4)
**質問:**スコアのシーケンスがあります:2 / 1、3 / 2、5 / 3、8 / 5、13 / 8、21 / 13 ...このシーケンスの最初の20項目の合計を見つけます。
**プログラム分析:**は、Fibonacciシーケンスの最後の項を前の項で割ったものです。
a =2.0
b =1.0
s =0for n inrange(1,21):
s += a / b
a,b = a + b,a
print(s)
質問: 1 + 2!+3!+ ... + 20!の合計を見つけます。
プログラム分析: 1 + 2!+3!+ ... + 20!= 1 + 2(1 + 3(1 + 4(... 20(1))))
res=1for i inrange(20,1,-1):
res=i*res+1print(res)
**質問:**再帰を使用して5を見つけます!。
**プログラム分析:**再帰的に呼び出すだけです。
def factorial(n):return n*factorial(n-1)if n>1else1print(factorial(5))
**トピック:**再帰関数呼び出しメソッドを使用して、入力した5文字を逆の順序で出力します。
**プログラム分析:**再帰は本当にばかげています。
def rec(string):iflen(string)!=1:rec(string[1:])print(string[0],end='')rec(input('string here:'))
トピック: 5人が一緒に座っていますが、5人目は何歳ですか?彼は4人目より2歳年上だと言った。 4人目の年齢を聞いたところ、3人目より2歳年上だったそうです。第三者に聞いて、彼は二人目より2歳年上だと言います。 2人目に聞いて、彼は1人目より2歳年上だと言います。最後に、私は最初の人に尋ねました、彼は彼が10歳であると言いました。 5人目は何歳ですか?
**プログラム分析:**最初の算術シーケンス。
def age(n):if n==1:return10return2+age(n-1)print(age(5))
質問: 5桁以下の正の整数を指定してください。要件:1。その中の桁数を見つけ、2。逆の順序で桁を印刷します。
**プログラム分析:**各桁を分解する方法を学び、文字列の使用方法は常に簡単です。
n=int(input('正の整数を入力してください:'))
n=str(n)print('%d桁'%len(n))print(n[::-1])
**件名:**それがパリンドロームであるかどうかを判断するための5桁の番号。つまり、12321はパリンドロームの数であり、1の場所は1万の場所と同じであり、10の場所は1000の場所と同じです。
**プログラム分析:**入力が数値でない場合でも、文字列を使用する方が便利です。
n=input("好きなものを入力してください:")
a=0
b=len(n)-1
flag=True
while a<b:if n[a]!=n[b]:print('パリンドロームではない')
flag=False
break
a,b=a+1,b-1if flag:print('パリンドローム')
**トピック:**曜日を決定するには、曜日の最初の文字を入力してください。最初の文字が同じである場合は、引き続き2番目の文字を決定してください。
**プログラム分析:**ここでは、比較関係は辞書の形式で直接保存されます。
weekT={'h':'thursday','u':'tuesday'}
weekS={'a':'saturday','u':'sunday'}
week={'t':weekT,'s':weekS,'m':'monday','w':'wensday','f':'friday'}
a=week[str(input('最初の文字を入力してください:')).lower()]if a==weekT or a==weekS:print(a[str(input('2番目の文字を入力してください:')).lower()])else:print(a)
**タイトル:**リストの値を逆の順序で出力します。
**プログラム分析:**なし。
a =['one','two','three']print(a[::-1])
**タイトル:**リストはコンマで区切ります。
**プログラム分析:**なし。
L =[1,2,3,4,5]print(','.join(str(n)for n in L))
**トピック:**関数呼び出しの練習。
**プログラム分析:**なし。
def hello():print('Hello World!')
def helloAgain():for i inrange(2):hello()if __name__=='__main__':helloAgain()
**タイトル:**テキストの色の設定。
**プログラム分析:**なし。
classbcolors:
HEADER ='\033[95m'
OKBLUE ='\033[94m'
OKGREEN ='\033[92m'
WARNING ='\033[93m'
FAIL ='\033[91m'
ENDC ='\033[0m'
BOLD ='\033[1m'
UNDERLINE ='\033[4m'print(bcolors.WARNING +"警告カラーフォント?"+ bcolors.ENDC)
質問: 100以内の素数を見つけてください。
プログラム分析: elseを使用して、forループの報酬コードを実行します(forが正常に終了した場合、中断しません)。
lo=int(input('下限:'))
hi=int(input('上限:'))for i inrange(lo,hi+1):if i >1:for j inrange(2,i):if(i % j)==0:breakelse:print(i)
トピック: 10個の数字を並べ替えます。
**プログラム分析:**例005と同じ。
raw=[]for i inrange(10):
x=int(input('int%d: '%(i)))
raw.append(x)for i inrange(len(raw)):for j inrange(i,len(raw)):if raw[i]>raw[j]:
raw[i],raw[j]=raw[j],raw[i]print(raw)
質問: 3 * 3行列の主な対角要素の合計を求めます。
**プログラム分析:**なし。
mat=[[1,2,3],[3,4,5],[4,5,6]]
res=0for i inrange(len(mat)):
res+=mat[i][i]print(res)
**質問:**ソートされた配列があります。次に、番号を入力し、元のルールに従って配列に挿入する必要があります。
**プログラム分析:**最初にこの番号が最後の番号より大きいかどうかを判断し、次に中央の番号を挿入する場合を検討します。この要素の後に番号を挿入した後、順番に1つ後ろに移動します。
lis=[1,10,100,1000,10000,100000]
n=int(input('insert a number: '))
lis.append(n)for i inrange(len(lis)-1):if lis[i]>=n:for j inrange(i,len(lis)):
lis[j],lis[-1]=lis[-1],lis[j]breakprint(lis)
**トピック:**配列を逆の順序で出力します。
**プログラム分析:**ポジションを1つずつ交換するか、リバースメソッドを直接呼び出します。
lis=[1,10,100,1000,10000,100000]for i inrange(int(len(lis)/2)):
lis[i],lis[len(lis)-1-i]=lis[len(lis)-1-i],lis[i]print('最初の実現:')print(lis)
lis=[1,10,100,1000,10000,100000]print('2番目の実現:')
lis.reverse()print(lis)
**トピック:**静的変数の使用法を模倣します。
**プログラム分析:**クラスを作成し、そのメソッドと変数を理解します。
def dummy():
i=0print(i)
i+=1classcls:
i=0
def dummy(self):print(self.i)
self.i+=1
a=cls()for i inrange(50):dummy()
a.dummy()
トピック: autoを使用して変数を定義する方法を学びます。
プログラム分析: pythonの変数の範囲。
i=0
n=0
def dummy():
i=0print(i)
i+=1
def dummy2():
global n
print(n)
n+=1print('関数内の同じ名前の変数')for j inrange(20):print(i)dummy()
i+=1print('グローバルは同じ名前の変数を宣言します')for k inrange(20):print(n)dummy2()
n+=10
**タイトル:**静的変数を模倣する別のケース。
**プログラム分析:**包括的な例041および例042。
classdummy:
num=1
def Num(self):print('class dummy num:',self.num)print('global num: ',num)
self.num+=1
n=dummy()
num=1for i inrange(5):
num*=10
n.Num()
トピック: 2つの行列の加算を計算します。
**プログラム分析:**新しいマトリックスを作成し、を使用して、XおよびYマトリックスの対応する位置の値を繰り返して取り出し、それらを追加して、新しいマトリックスの対応する位置に配置します。
X =[[12,7,3],[4,5,6],[7,8,9]]
Y =[[5,8,1],[6,7,3],[4,5,9]]
res=[[0,0,0],[0,0,0],[0,0,0]]for i inrange(len(res)):for j inrange(len(res[0])):
res[i][j]=X[i][j]+Y[i][j]print(res)
トピック: 1から100の合計を数えます。
**プログラム分析:**なし
res=0for i inrange(1,101):
res+=i
print(res)
**質問:**入力番号の2乗を見つけます。2乗演算が50未満の場合は、終了します。
**プログラム分析:**なし
while True:try:
n=float(input('番号を入力してください:'))
except:print('入力エラー')continue
dn=n**2print('その正方形は次のとおりです。',dn)if dn<50:print('正方形は50未満です、出口')break
トピック: 2つの変数の値は関数と交換されます。
**プログラム分析:**なし
def exc(a,b):return(b,a)
a=0
b=10
a,b=exc(a,b)print(a,b)
**件名:**数値の比較。
**プログラム分析:**なし
a=int(input('a='))
b=int(input('b='))if a<b:print('a<b')
elif a>b:print('a>b')else:print('a=b')
**トピック:**ラムダを使用して匿名関数を作成します。
**プログラム分析:**なし
Max=lambda x,y:x*(x>=y)+y*(y>x)
Min=lambda x,y:x*(x<=y)+y*(y<x)
a=int(input('1:'))
b=int(input('2:'))print(Max(a,b))print(Min(a,b))
**質問:**ランダムな数値を出力します。
**プログラム分析:**ランダムモジュールを使用します。
import random
print(random.uniform(10,20))
**トピック:**ビットワイズと&の使い方を学びます。
プログラム分析: 0&0 = 0; 0&1 = 0; 1&0 = 0; 1&1 = 1。
a=0o77print(a)
b=a&3print(b)
b=b&7print(b)
**トピック:**ビットワイズまたは|の使用方法を学びます。
プログラム分析: 0 | 0 = 0; 0 | 1 = 1; 1 | 0 = 1; 1 | 1 = 1
a=0o77print(a|3)print(a|3|7)
**トピック:**ビット単位のXOR ^の使用方法を学びます。
プログラム分析: 0 ^ 0 = 0; 0 ^ 1 = 1; 1 ^ 0 = 1; 1 ^ 1 = 0
a=0o77print(a^3)print(a^3^7)
**質問:**右端から4〜7桁の整数aを取ります。
**プログラム分析:**次のように考えることができます。(1)最初にaを4ビット右にシフトします。 (2)下位4ビットがすべて1で、残りがすべて0の番号を設定します。 〜(〜0 << 4)(3)を使用して、上記の2つを実行および操作します。
a=int(input('番号を入力してください: '))
b=0 # 0
b=~b # 1
b=b<<4 # 10000
b=~b # 1111
c=a>>4
d=c&b
print('a:',bin(a))print('b:',bin(b))print('c:',bin(c))print('d:',bin(d))
**トピック:**ビット単位の反転の使用方法を学びます〜。
プログラム分析: 〜0 = 1; 〜1 = 0;
print(~234)print(~~234)
**トピック:**絵を描き、円を使って円を描く方法を学びます。
**プログラム分析:**なし。
from tkinter import*
canvas=Canvas(width=800,height=600,bg='yellow')
canvas.pack(expand=YES,fill=BOTH)
k=1
j=1for i inrange(26):
canvas.create_oval(310-k,250-k,310+k,250+k,width=1)
k+=j
j+=0.3mainloop()
**トピック:**絵を描き、線で直線を描くことを学びます。
**プログラム分析:**なし。
if __name__ =='__main__':from tkinter import*
canvas =Canvas(width=300, height=300, bg='green')
canvas.pack(expand=YES, fill=BOTH)
x0 =263
y0 =263
y1 =275
x1 =275for i inrange(19):
canvas.create_line(x0,y0,x0,y1, width=1, fill='red')
x0 = x0 -5
y0 = y0 -5
x1 = x1 +5
y1 = y1 +5
x0 =263
y1 =275
y0 =263for i inrange(21):
canvas.create_line(x0,y0,x0,y1,fill ='red')
x0 +=5
y0 +=5
y1 +=5mainloop()
**トピック:**絵を描き、長方形で正方形を描くことを学びます。
**プログラム分析:**なし。
if __name__ =='__main__':from tkinter import*
root =Tk()
root.title('Canvas')
canvas =Canvas(root,width =400,height =400,bg ='yellow')
x0 =263
y0 =263
y1 =275
x1 =275for i inrange(19):
canvas.create_rectangle(x0,y0,x1,y1)
x0 -=5
y0 -=5
x1 +=5
y1 +=5
canvas.pack()
root.mainloop()
**トピック:**図面、包括的な例。
**プログラム分析:**醜い。
if __name__ =='__main__':from tkinter import*
canvas =Canvas(width =300,height =300,bg ='green')
canvas.pack(expand = YES,fill = BOTH)
x0 =150
y0 =100
canvas.create_oval(x0 -10,y0 -10,x0 +10,y0 +10)
canvas.create_oval(x0 -20,y0 -20,x0 +20,y0 +20)
canvas.create_oval(x0 -50,y0 -50,x0 +50,y0 +50)import math
B =0.809for i inrange(16):
a =2* math.pi /16* i
x = math.ceil(x0 +48* math.cos(a))
y = math.ceil(y0 +48* math.sin(a)* B)
canvas.create_line(x0,y0,x,y,fill ='red')
canvas.create_oval(x0 -60,y0 -60,x0 +60,y0 +60)for k inrange(501):for i inrange(17):
a =(2* math.pi /16)* i +(2* math.pi /180)* k
x = math.ceil(x0 +48* math.cos(a))
y = math.ceil(y0 +48+ math.sin(a)* B)
canvas.create_line(x0,y0,x,y,fill ='red')for j inrange(51):
a =(2* math.pi /16)* i +(2* math.pi /180)* k -1
x = math.ceil(x0 +48* math.cos(a))
y = math.ceil(y0 +48* math.sin(a)* B)
canvas.create_line(x0,y0,x,y,fill ='red')mainloop()
**トピック:**文字列の長さを計算します。
**プログラム分析:**なし。
s='zhangguang101'print(len(s))
**タイトル:**ヤンフイの三角形の最初の10行を印刷します。
**プログラム分析:**なし。
def generate(numRows):
r =[[1]]for i inrange(1,numRows):
r.append(list(map(lambda x,y:x+y,[0]+r[-1],r[-1]+[0])))return r[:numRows]
a=generate(10)for i in a:print(i)
**タイトル:**文字列を検索します。
**プログラム分析:**なし。
s1='aabbxuebixuebi'
s2='ab'
s3='xue'print(s1.find(s2))print(s1.find(s3))
**トピック:**楕円を描きます。
プログラム分析: tkinterを使用します。
if __name__ =='__main__':from tkinter import*
x =360
y =160
top = y -30
bottom = y -30
canvas =Canvas(width =400,height =600,bg ='white')for i inrange(20):
canvas.create_oval(250- top,250- bottom,250+ top,250+ bottom)
top -=5
bottom +=5
canvas.pack()mainloop()
**トピック:**楕円と長方形を使用して絵を描きます。 。
**プログラム分析:**なし。
if __name__ =='__main__':from tkinter import*
canvas =Canvas(width =400,height =600,bg ='white')
left =20
right =50
top =50
num =15for i inrange(num):
canvas.create_oval(250- right,250- left,250+ right,250+ left)
canvas.create_oval(250-20,250- top,250+20,250+ top)
canvas.create_rectangle(20-2* i,20-2* i,10*(i +2),10*( i +2))
right +=5
left +=5
top +=10
canvas.pack()mainloop()
**タイトル:**最も美しいパターンの1つ。
**プログラム分析:**なし。
import math
from tkinter import*classPTS:
def __init__(self):
self.x =0
self.y =0
points =[]
def LineToDemo():
screenx =400
screeny =400
canvas =Canvas(width = screenx,height = screeny,bg ='white')
AspectRatio =0.85
MAXPTS =15
h = screeny
w = screenx
xcenter = w /2
ycenter = h /2
radius =(h -30)/(AspectRatio *2)-20
step =360/ MAXPTS
angle =0.0for i inrange(MAXPTS):
rads = angle * math.pi /180.0
p =PTS()
p.x = xcenter +int(math.cos(rads)* radius)
p.y = ycenter -int(math.sin(rads)* radius * AspectRatio)
angle += step
points.append(p)
canvas.create_oval(xcenter - radius,ycenter - radius,
xcenter + radius,ycenter + radius)for i inrange(MAXPTS):for j inrange(i,MAXPTS):
canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)
canvas.pack()mainloop()if __name__ =='__main__':LineToDemo()
トピック: 3つの数値a、b、cを入力し、大きさの順に出力します。
**プログラム分析:**例005と同じ。
raw=[]for i inrange(3):
x=int(input('int%d: '%(i)))
raw.append(x)for i inrange(len(raw)):for j inrange(i,len(raw)):if raw[i]>raw[j]:
raw[i],raw[j]=raw[j],raw[i]print(raw)
raw2=[]for i inrange(3):
x=int(input('int%d: '%(i)))
raw2.append(x)print(sorted(raw2))
**トピック:**入力配列、最初の要素との最大の交換、最後の要素との最小の交換は、配列を出力します。
**プログラム分析:**なし。
li=[3,2,5,7,8,1,5]
li[-1],li[li.index(min(li))]=li[li.index(min(li))],li[-1]
m=li[0]
ind=li.index(max(li))
li[0]=li[ind]
li[ind]=m
print(li)
質問: n個の整数があるため、前の番号はm位置後方に移動し、最後のm個の番号が最初のm個の番号になります
**プログラム分析:**なし。
from collections import*
li=[1,2,3,4,5,6,7,8,9]
deq=deque(li,maxlen=len(li))print(li)
deq.rotate(int(input('rotate:')))print(list(deq))
**質問:**サークルにはn人が順番に並んでいます。最初の人から数え始めます(1から3まで)。3に報告した人は誰でもサークルを出て、どちらの人が元の数であるかを尋ねます。
**プログラム分析:**なし。
if __name__ =='__main__':
nmax =50
n =int(input('総人数を入力してください:'))
num =[]for i inrange(n):
num.append(i +1)
i =0
k =0
m =0while m < n -1:if num[i]!=0: k +=1if k ==3:
num[i]=0
k =0
m +=1
i +=1if i == n : i =0
i =0while num[i]==0: i +=1print(num[i])
**トピック:**文字列の長さを見つける関数を記述し、メイン関数に文字列を入力して、その長さを出力します。
**プログラム分析:**なし。
def lenofstr(s):returnlen(s)print(lenofstr('tanxiaofengsheng'))
トピック: input()およびoutput()関数の入力を書き込み、5人の学生のデータレコードを出力します。
**プログラム分析:**なし。
N =3
# stu
# num : string
# name : string
# score[4]: list
student =[]for i inrange(5):
student.append(['','',[]])
def input_stu(stu):for i inrange(N):
stu[i][0]=input('input student num:\n')
stu[i][1]=input('input student name:\n')for j inrange(3):
stu[i][2].append(int(input('score:\n')))
def output_stu(stu):for i inrange(N):print('%-6s%-10s'%( stu[i][0],stu[i][1]))for j inrange(3):print('%-8d'% stu[i][2][j])if __name__ =='__main__':input_stu(student)print(student)output_stu(student)
**件名:**リンクリストを作成します。
**プログラム分析:**元のテキストはあまり信頼できません。
classNode:
def __init__(self, data):
self.data = data
self.next = None
def get_data(self):return self.data
classList:
def __init__(self, head):
self.head = head
def is_empty(self):return self.get_len()==0
def get_len(self):
length =0
temp = self.head
while temp is not None:
length +=1
temp = temp.next
return length
def append(self, node):
temp = self.head
while temp.next is not None:
temp = temp.next
temp.next = node
def delete(self, index):if index <1 or index > self.get_len():print("指定された場所は不合理です")returnif index ==1:
self.head = self.head.next
return
temp = self.head
cur_pos =0while temp is not None:
cur_pos +=1if cur_pos == index-1:
temp.next = temp.next.next
temp = temp.next
def insert(self, pos, node):if pos <1 or pos > self.get_len():print("挿入されたノードの場所が不合理です")return
temp = self.head
cur_pos =0while temp is not Node:
cur_pos +=1if cur_pos == pos-1:
node.next = temp.next
temp.next =node
break
temp = temp.next
def reverse(self, head):if head is None and head.next is None:return head
pre = head
cur = head.next
while cur is not None:
temp = cur.next
cur.next = pre
pre = cur
cur = temp
head.next = None
return pre
def print_list(self, head):
init_data =[]while head is not None:
init_data.append(head.get_data())
head = head.next
return init_data
if __name__=='__main__':
head=Node('head')
link=List(head)for i inrange(10):
node=Node(i)
link.append(node)print(link.print_list(head))
**タイトル:**リンクされたリストを逆に出力します。
**プログラム分析:**なし。
classNode:
def __init__(self, data):
self.data = data
self.next = None
def get_data(self):return self.data
classList:
def __init__(self, head):
self.head = head
def is_empty(self):return self.get_len()==0
def get_len(self):
length =0
temp = self.head
while temp is not None:
length +=1
temp = temp.next
return length
def append(self, node):
temp = self.head
while temp.next is not None:
temp = temp.next
temp.next = node
def delete(self, index):if index <1 or index > self.get_len():print("指定された場所は不合理です")returnif index ==1:
self.head = self.head.next
return
temp = self.head
cur_pos =0while temp is not None:
cur_pos +=1if cur_pos == index-1:
temp.next = temp.next.next
temp = temp.next
def insert(self, pos, node):if pos <1 or pos > self.get_len():print("挿入されたノードの場所が不合理です")return
temp = self.head
cur_pos =0while temp is not Node:
cur_pos +=1if cur_pos == pos-1:
node.next = temp.next
temp.next =node
break
temp = temp.next
def reverse(self, head):if head is None and head.next is None:return head
pre = head
cur = head.next
while cur is not None:
temp = cur.next
cur.next = pre
pre = cur
cur = temp
head.next = None
return pre
def print_list(self, head):
init_data =[]while head is not None:
init_data.append(head.get_data())
head = head.next
return init_data
if __name__=='__main__':
head=Node('head')
link=List(head)for i inrange(10):
node=Node(i)
link.append(node)print(link.print_list(head))print(link.print_list(link.reverse(head)))
**トピック:**リストの並べ替えと接続。
**プログラム分析:**並べ替えにはsort()メソッドを使用でき、接続には+記号またはextend()メソッドを使用できます。
a=[2,6,8]
b=[7,0,4]
a.extend(b)
a.sort()print(a)
**トピック:**リラックスしてください。簡単なトピックです。
**プログラム分析:**ゴーストはそれが何であるかを知っています。
if __name__ =='__main__':for i inrange(5):
n =0if i !=1: n +=1if i ==3: n +=1if i ==4: n +=1if i !=4: n +=1if n ==3:print(64+ i)
**トピック:**関数を記述します。入力nが偶数の場合は関数を呼び出して、1/2 + 1/4 + ... + 1 / nを見つけます。入力nが奇数の場合は、関数を呼び出します。1/ 1 + 1/3 + ... + 1 / n
**プログラム分析:**なし。
def peven(n):
i =0
s =0.0for i inrange(2,n +1,2):
s +=1.0/ i
return s
def podd(n):
s =0.0for i inrange(1, n +1,2):
s +=1.0/ i
return s
def dcall(fp,n):
s =fp(n)return s
if __name__ =='__main__':
n =int(input('input a number: '))if n %2==0:
sum =dcall(peven,n)else:
sum =dcall(podd,n)print(sum)
**タイトル:**出力リストを回覧
**プログラム分析:**なし。
l=['moyu','niupi','xuecaibichi','shengfaji','42']for i inrange(len(l)):print(l[i])
**トピック:**最年長の人を見つけて出力します。プログラムのどこが悪いのか調べてください。
**プログラム分析:**なし。
if __name__ =='__main__':
person ={"li":18,"wang":50,"zhang":20,"sun":22}
m ='li'for key in person.keys():if person[m]< person[key]:
m = key
print('%s,%d'%(m,person[m]))
**件名:**文字列の並べ替え。
**プログラム分析:**なし。
l=['baaa','aaab','aaba','aaaa','abaa']
l.sort()print(l)
**トピック:**ビーチには桃の山があり、5匹のサルがそれを分けています。最初のサルは桃の山を均等に5つに分けました。もう1つ追加しました。サルはさらに多くを海に投げて1つ取りました。 2番目のサルは残りの桃を5つに均等に分け、もう1つ追加しました。また、余分な1つを海に投げて、1つを取り出しました。3番目、4番目、5番目のサルも同じことをしました。はい、ビーチには何匹の桃がいますか?
**プログラム分析:**なし。
if __name__ =='__main__':
i =0
j =1
x =0while(i <5):
x =4* j
for i inrange(0,5):if(x%4!=0):breakelse:
i +=1
x =(x/4)*5+1
j +=1print(x)for p inrange(5):
x=(x-1)/5*4print(x)
トピック: 809 * ?? = 800 * ?? + 9 * ??ここで、??は2桁、809 * ??は4桁、8 * ??の結果は2桁、9 *? ?の結果は3桁です。 ??で表される2桁と、809 * ??の後の結果を見つけます。
**プログラム分析:**なし。
a =809for i inrange(10,100):
b = i * a
if b >=1000 and b <=10000 and 8* i <100 and 9* i >=100:print(b,' = 800 * ', i,' + 9 * ', i)for i inrange(10,100):if8*i>99 or 9*i<100:continueif809*i==800*i+9*i:print(i)break
トピック: 8進数を10進数に変換する
**プログラム分析:**なし。
n=eval('0o'+str(int(input('オクタル入力:'))))print(n)
質問: 0から7で構成できる奇数を見つけてください。
プログラム分析:
桁数は4です。 1、3、5、7終了
2桁は7 * 4です。最初の桁を0にすることはできません
3桁の数字は7 * 8 * 4です。間にランダム
4桁は7 * 8 * 8 * 4です。
if __name__ =='__main__':
sum =4
s =4for j inrange(2,9):print(sum)if j <=2:
s *=7else:
s *=8
sum += s
print('sum = %d'% sum)
**件名:**接続文字列。
**プログラム分析:**なし。
delimiter =','
mylist =['Brazil','Russia','India','China']print(delimiter.join(mylist))
**質問:**奇数を入力し、少なくとも数個の9を数値で割った値が整数であると判断します。
プログラム分析: 999999/13 = 76923。
if __name__ =='__main__':
zi =int(input('番号を入力してください:'))
n1 =1
c9 =1
m9 =9
sum =9while n1 !=0:if sum % zi ==0:
n1 =0else:
m9 *=10
sum += m9
c9 +=1print('%d9sは%d分割可能: %d'%(c9,zi,sum))
r = sum / zi
print('%d / %d = %d'%(sum,zi,r))
件名: 2つの文字列連結手順。
**プログラム分析:**なし。
a='guangtou'
b='feipang'print(b+a)
**質問:**回答結果(構造変数の送信)。
**プログラム分析:**なし。
if __name__ =='__main__':classstudent:
x =0
c =0
def f(stu):
stu.x =20
stu.c ='c'
a=student()
a.x =3
a.c ='a'f(a)print(a.x,a.c)
タイトル: 7つの数値(1〜50)の整数値を読み取り、値が読み取られるたびに、プログラムは値の数値*を出力します。
**プログラム分析:**なし。
for i inrange(3):print('*'*int(input('input a number: ')))
**トピック:**会社は公衆電話を使用してデータを送信します。データは4桁の整数であり、送信中に暗号化されます。暗号化ルールは次のとおりです。各番号に5を加算し、合計の残りを10で割った値に置き換えます。番号を付けてから、1桁目と4桁目を入れ替え、2桁目と3桁目を入れ替えます。
**プログラム分析:**なし。
n=input()
n =str(n)
a=[]for i inrange(4):
a.append((int(n[i])+5)%10)
a[0],a[3]=a[3],a[0]
a[1],a[2]=a[2],a[1]print("".join('%s'%s for s in a))
**タイトル:**リストの使用例。
**プログラム分析:**なし。
# list
# 新しいリスト
testList=[10086,'チャイナモバイル',[1,2,4,5]]
# アクセスリストの長さ
print(len(testList))
# リストの最後まで
print(testList[1:])
# リストに要素を追加する
testList.append('i\'m new here!')print(len(testList))print(testList[-1])
# ポップアップリストの最後の要素
print(testList.pop(1))print(len(testList))print(testList )
# list comprehension
# 後で紹介があります、ただ通り過ぎてください
matrix =[[1,2,3],[4,5,6],[7,8,9]]print(matrix )print(matrix[1])
col2 =[row[1]for row in matrix]#get a column from a matrix
print(col2 )
col2even =[row[1]for row in matrix if row[1]%2==0]#filter odd item
print(col2even)
**トピック:**時間関数の例1。
**プログラム分析:**なし。
if __name__ =='__main__':import time
print(time.ctime(time.time()))print(time.asctime(time.localtime(time.time())))print(time.asctime(time.gmtime(time.time())))
**トピック:**時間関数の例2。
**プログラム分析:**時間を無駄にする方法。
if __name__ =='__main__':import time
start = time.time()for i inrange(3000):print(i)
end = time.time()print(end - start)
**トピック:**時間関数の例3。
**プログラム分析:**時間を無駄にする方法。
if __name__ =='__main__':import time
start = time.clock()for i inrange(100):print(i)
end = time.clock()print('different is %6.3f'%(end - start))
**トピック:**時間関数の例4。
**プログラム分析:**時間を無駄にする方法。
if __name__ =='__main__':import time
import random
play_it =input('do you want to play it.(\'y\' or \'n\')')while play_it =='y':
c =input('input a character:\n')
i = random.randint(0,2**32)%100print('please input number you guess:\n')
start = time.clock()
a = time.time()
guess =int(input('input your guess:\n'))while guess != i:if guess > i:print('please input a little smaller')
guess =int(input('input your guess:\n'))else:print('please input a little bigger')
guess =int(input('input your guess:\n'))
end = time.clock()
b = time.time()var=(end - start)/18.2print(var)
# print 'It took you %6.3 seconds'% time.difftime(b,a))ifvar<15:print('you are very clever!')
elif var<25:print('you are normal!')else:print('you are stupid!')print('Congradulations')print('The number you guess is %d'% i)
play_it =input('do you want to play it.')
**タイトル:**文字列の日付は読み取り可能な日付形式に変換されます。
**プログラム分析:**見てください。dateutilはサードパーティのライブラリです。
from dateutil import parser
dt = parser.parse("Aug 28 2015 12:00AM")print(dt)
**トピック:**文字列内のサブ文字列の出現回数をカウントします。
**プログラム分析:**なし。
s1='xuebixuebixuebixuebixuebixuebixuebixue'
s2='xuebi'print(s1.count(s2))
**トピック:**キーボードからいくつかの文字を入力し、#を入力するまで、それらを1つずつディスクファイルに書き込みます。
**プログラム分析:**なし。
if __name__ =='__main__':from sys import stdout
filename =input('入力ファイル名:\n')
fp =open(filename,"w")
ch =input('入力文字列:\n')while ch !='#':
fp.write(ch)
stdout.write(ch)
ch =input('')
fp.close()
**トピック:**キーボードから文字列を入力し、すべての小文字を大文字に変換してから、ディスクファイル「test」に出力して保存します。
**プログラム分析:**なし。
if __name__ =='__main__':
fp =open('test.txt','w')
string =input('please input a string:\n')
string = string.upper()
fp.write(string)
fp =open('test.txt','r')print(fp.read())
fp.close()
トピック: 2つのディスクファイルAとBがあり、それぞれに1行の文字が格納されています。これら2つのファイルの情報を(アルファベット順に)マージして、新しいファイルCに出力する必要があります。
**プログラム分析:**なし。
if __name__ =='__main__':import string
fp =open('test1.txt')
a = fp.read()
fp.close()
fp =open('test2.txt')
b = fp.read()
fp.close()
fp =open('test3.txt','w')
l =list(a + b)
l.sort()
s =''
s = s.join(l)
fp.write(s)
fp.close()
**タイトル:**リストは辞書に変換されました。
**プログラム分析:**なし。
i =['a','b']
l =[1,2]print(dict(zip(i,l)))
共有または視聴は私の最大のサポートです
Recommended Posts