天天看點

Python之路-Day4Python練習

Python練習

1、 使用python輸出如下圖形,用while循環

# 使用while循環輸出如下圖形:(必須使用雙重while循環實作)
# *
# * *
# * * *
# * * * *
# * * * * *

i = 1
j = 1
while i <= 5:
    while j == i:
        print('* ' * (i-1)+'*')
        j += 1
    i += 1
           

2、 使用python輸出如下圖形,用while循環

# 使用while循環輸出如下圖形:(必須使用雙重while循環實作)
#     *
#    * *
#   * * *
#  * * * *
# * * * * *

i = 1
while i <= 5:
    j = 1
    while j <= i:
        if j == 1:
            print(" " * (5 - i), end="")
        print("* ", end="")
        j += 1
    print("")
    i += 1
           

3、 過7遊戲

# 設計“過7遊戲”的程式, 列印出1-100之間除了含7和7的倍數之外的所有數字。
num = []
for i in range(1, 101):
    if i % 7 != 0 and (i +3) % 10 != 0 and i % 10 != 7: 
    # 能被7整除、加3以後能被10整除、被10除以後取整等于7
        num.append(i)
print(num)
           

4、水仙花數

# 題目:列印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,
# 其各個位上數字的立方和等于該數本身。例如:153是一個”水仙花數",
num = []
for i in range(100, 1000):
    a = i // 100
    b = (i - a * 100) // 10
    c = i - a * 100 - b * 10
    if i == a ** 3 + b ** 3 + c ** 3:
        num.append(i)
print(num)
           

5、石頭剪刀布

# 使用while、if來完成剪刀石頭布程式,要求,
# 當玩家第3次獲勝時才退出遊戲,否則繼續玩。

import random

winNum = 0
while winNum != 3:
    computer = random.randint(1, 3)
    print(computer)
    player = int(input('1是剪刀,2是石頭,3是布。請輸入你要出的數字:'))
    if (computer == 1 and player == 2) or (computer == 2 and player == 3) or(computer == 3 and player == 1):
        winNum += 1
           

6、 猜數字:遊戲随機給出一個0~99(包括0和99)的數字,然後讓你猜是什麼數字。你可以随便猜一個數字,遊戲會提示太大還是太小,進而縮小結果範圍。經過幾次猜測與提示後,最終推出答案。在遊戲過程中,記錄你最終猜對時所需要的次數,遊戲結束後公布結果。 說明:

1~2次猜中,列印你太TM有才了!

3~6次猜中,列印這麼快就猜出來了,很聰明嘛!

大于7次猜中,列印猜了半天才猜出來,小同志,尚需努力啊!

猜測次數最多20次。

import random
guessNum = random.randint(0, 99)
print(guessNum)
guessTimes = 0 # 猜的次數
gameTimes = 0 # 遊戲運作次數,主要是用來控制遊戲狀态
game = True # 遊戲狀态
while gameTimes != 20:
    while game:
        player = int(input('a number:'))
        guessTimes += 1
        gameTimes += 1
        if gameTimes == 20: # 當運作了20次後,關閉遊戲
            game = False
        if player != guessNum: # 猜的不對時給出提示
            if player < guessNum:
                print('小了,再一次。')
            elif player > guessNum:
                print('大了,再來一次。')
        else: # 猜對的時候停止遊戲,并輸出結果
            game = False
            if guessTimes < 2:
                print('你太TM有才了!')
            elif guessTimes < 6:
                print('這麼快就猜出來了,很聰明嘛!')
            else:
                print('半天才猜出來,小同志,尚需努力啊!')

            # print(guessTimes)
           

7、 紅藍白三色球:有10個球分别為3紅、3藍、4白,球與球之間隻有顔色的差别,現需要将這10個球放入3個盒子,要求每個盒子至少有一個白球,其餘的球全部随機放,要求輸出三個盒子裡所有球的顔色,請用程式實作。

import random
# 建立十個球
RedBall = ['紅球', '紅球', '紅球']
BlueBall = ['藍球', '藍球', '藍球']
WhiteBall = ['白球', '白球', '白球', '白球']

# 建立三個盒子
boxes = [[], [], []]
for box in boxes:
    box.append(WhiteBall.pop()) # 将白球放入

print(boxes) # 驗證白球放入情況
balls = RedBall + BlueBall + WhiteBall # 将剩下的球合起來

for ball in balls:
    boxNum = random.randint(0, 2) # 随機生成該球要放入盒子的編号
    boxes[boxNum].append(ball) # 放球
print(boxes)
           

8、 輸出0-100的質數

num = []
for i in range(2, 101): # 要避開1
    for a in range(2, i//2):
        if (i % a == 0):
            break
    else:
        num.append(i)
print(num)
           

9、 用python輸出如下圖形

# 3、使用while,完成以下圖形的輸出。
# (每一行的星星不能用*乘以星星的數量來完成,須使用while嵌套)
#     *
#    ***
#   *****
#  *******
# *********
#  *******
#   *****
#    ***
#     *

row = 1 # 哪一行
num = 1 # 每一行星星的數量
while row <= 9:
    num1 = 1 # 第一步列印空格
    # 下面的判斷确定每一行星星的數量
    if row != 1:
        if row < 6:
            num += 2
        else:
            num -= 2
    while num1 <= num:
        if num1 == 1:
            print(' ' * ((9 - num) // 2), end='') # 列印空格
        print('*', end='') # 列印星星
        num1 += 1
    print('') # 換行
    row += 1