Python超簡單習題-2

更新 發佈閱讀 3 分鐘

大概一樣是學生習題

輸入五張不同點數撲克牌然後相加

能輸入字串1~13,也可以輸入字串AJQK

思路是用isdigit檢查輸入是不是數字,是就直接迭代,不是查表對應的數字

所以建立兩個list用來對照, 找出字母在a的index然後撈出b對應位置的數字

# -*- coding: UTF-8 -*-
a=['A','J','Q','K','a','j','q','k']
b=[1,11,12,13,1,11,12,13]
result = 0


for i in range (0,5): 
    card = input('>>> number' + str(i+1) + ': ')   
    if card.isdigit():
        result += int(card)
    else:
        result += int(b[a.index(card)])
print (result)

 

但這樣有點簡陋,超過13的數字一樣會加總, 然後輸入非AJQK字母會報錯

=========================================

更新了一下變成輸入1~13, AKQJ 以外的字都要重新輸入

用while loop break和try:except來控制程式流向

每一次輸入都進while loop檢查是不是數字

如果是就再檢查是不是1~13, 是的話中斷loop出來疊加

不是數字就檢查是不是在列表內, 是的話轉換成數字中斷loop出來疊加

不是就會報錯被except ValueError抓到, 然後重新輸入

 

# -*- coding: UTF-8 -*-
a=['A','J','Q','K','a','j','q','k']
b=[1,11,12,13,1,11,12,13]
result = 0

for i in range (0,5): 
    while True:
        try:
            card = input('>>> number' + str(i+1) + ': ')
            if card.isdigit():
                w = int(card)
                if w <= 13 and w >= 1: break
                else: print ('<bad input1>')
            else:
                w = int(b[a.index(card)])
                break
        except ValueError: print ('<bad input2>')
    result += w

print (result)
 

留言
avatar-img
留言分享你的想法!
avatar-img
hls Ding的沙龍
7會員
64內容數
ktest
hls Ding的沙龍的其他內容
2025/03/06
import csv import os folder = 'D:/PROGRAMMING/PythonCode/data_arrange/' fname_sum = 'sum.csv' bump = 6 csv_filenames = [f for f in os.listdir(folde
2025/03/06
import csv import os folder = 'D:/PROGRAMMING/PythonCode/data_arrange/' fname_sum = 'sum.csv' bump = 6 csv_filenames = [f for f in os.listdir(folde
看更多
你可能也想看
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News