Python入門之經典練習題

2021-09-21 07:19:35 字數 3495 閱讀 1706

第 1 題,輸出九九乘法表

分析思路:

1. for 迴圈機制,先取第乙個for迴圈i的第1個值,跟j遍歷完來組合。11 12 13 ... 21 22 23...

得出結論,此處的 i 無需做限制。

2. 找規律

第1行: j = 1  i = 1

第2行: j = 1,2  i = 2

第3行: j = 1,2,3  i = 3

得出結論:j 的最大取值不可大於 i ,只能小於等於,故限制 j 取值範圍(1, i+1)  => range 函式左閉右開

3. 注意點:

必須使用格式化輸出,\t製表符排版,j 遍歷完一次就必須換行。

for i in range(1, 10):

for j in range(1, i+1):

print("%d*%d=%d" % (j, i, i*j), end="\t")

print()

1*1=1    

1*2=2    2*2=4    

1*3=3    2*3=6    3*3=9    

1*4=4    2*4=8    3*4=12    4*4=16    

1*5=5    2*5=10    3*5=15    4*5=20    5*5=25    

1*6=6    2*6=12    3*6=18    4*6=24    5*6=30    6*6=36    

1*7=7    2*7=14    3*7=21    4*7=28    5*7=35    6*7=42    7*7=49    

1*8=8    2*8=16    3*8=24    4*8=32    5*8=40    6*8=48    7*8=56    8*8=64    

1*9=9    2*9=18    3*9=27    4*9=36    5*9=45    6*9=54    7*9=63    8*9=72    9*9=81    

第  2 題,有 1 2 3 4 這四個數字,能組成多少個互相不同且無重複數字的 3 位數,分別是什麼。

思路:要組成幾位數,就用幾個for迴圈,無論給了幾個數字,全部放進列表,都不用改**。

count = 0

m = [1, 2, 3, 4]

for a in m:

for b in m:

for c in m:

if a != b and b != c and a != c:

count += 1

print(a, b, c)

print()

print("能組成%d 個不相同且無重複的3位數" % count)

第  3 題,跟電腦玩剪刀石頭布遊戲,一直迴圈玩,可手動退出,不玩了就計算玩家勝率

def play_game():

# 總把數

count = 0

# 勝率把數

player_win = 0

while true:

import random

computer = random.randint(1, 3)

player = int(input("請輸入數字,1剪刀,2石頭,3布,0手動退出:"))

# 手動退出遊戲

if player == 0:

# 判斷一次沒玩就退出遊戲

if count == 0:

print("您還沒開始遊戲!!!")

break

print("遊戲結束!!!")

print("玩家玩了:%d把,贏了:%d把,勝率:%.2f%%" % (count, player_win, player_win/count * 100))

break

# elif player < 1 or player > 3:

elif player not in (1, 2, 3):

print("請輸入1-3之間的數字")

# 增加換行,美化顯示效果

print()

continue

# 把數計數

count += 1

print("電腦出拳為:%d" % computer)

if player == computer - 1 or player == computer + 2:

print("玩家勝利!")

# 玩家勝利計數

player_win += 1

elif player == computer:

print("平局!")

else:

print("電腦勝利")

print()

play_game()

第  4 題,尋找15到20歲的女孩子當拉拉隊員,詢問,符合要求輸出加入成功,詢問10次後,輸出滿足條件總人數

member = {}

count = 0

met_count = 0

def laladui(num):

global met_count

if num["gender"] == "女" and 15 <= num["age"] <= 20:

print("可以加入球隊!")

met_count += 1

else:

return

while true:

gender, age = eval(input("請輸入性別(加引號),年齡:"))

member["gender"] = gender

member["age"] = age

laladui(member)

count += 1

if count > 5:

print()

print("已經詢問過%d個人" % count)

print("符合條件的人數是:%d" % met_count)

break

第  5 題,利用 for 迴圈給列表  ls = [1,7,4,89,34,2,100,0] 從小到大排序,==>氣泡排序法

思路:先取列表的第乙個數字,依次跟後面的數字比較大小,如果第乙個數字比後面的大,則交換位置。

利用下標來取值,第乙個數字a依次從 第一位取到倒數第一位(把最後一位留給第二個數字b來取,好做比較)

第二個數字b依次從第二位取到最後一位。以此類推,當把列表中數字取完,結果就出來了。

a = [1, 7, 4, 89, 34, 2, 100, 0]

for i in range(0, len(a)-1):

for j in range(i+1, len(a)):

if a[i] > a[j]:

a[i], a[j] = a[j], a[i]

print(a)

Python入門經典練習題之坦克大戰(簡化版)

coding utf 8 author keen created on 2019 5 18 e mail keen2020 outlook.com import random class basetank object 類屬性,定義初始值 def init self self.live 1 self...

python入門練習題

1.使用者鍵盤輸入一年份,判斷是否為閏年?如果是閏年,則輸出 是閏年 如果不是閏年,則輸出 不是閏年 判斷閏年的方法 1 能被4整除但不能被100整除 2 能被400整除 2.for迴圈巢狀 列印9 9乘法表 3.輸入兩個數,求這兩個數的最大公約數和最小公倍數 1.企業發放的獎金根據利潤提成。利潤 ...

python入門練習題2

1.利用遞迴方法求5!def tang j sum value 0 if j 0 sum value 1 else sum value j tang j 1 return sum valuefor i in range 10 print d d i,tang i 利用遞迴函式呼叫方式,將所輸入的5個...