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
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News