iT邦幫忙

0

有人可以幫我改這串程式碼嗎24行出錯 bool object is not subscriptable

  • 分享至 

  • xImage

import random
a=random.sample([1,2,3,4,5,6,7,8,9],4)
while True:
ans=input("")
A=0
B=0
a=False
b=False
for i in ans:
if i not in “123456789”:
a=True
if ans.count(1)>1:
b=true
if len(ans)!=4:
print(“請翰入四個相異數字”)
elif “0” in ans:
print (”輸入數字不得為 o”)
elif a:
print ("請入數字")
elif b:
print(“請輪入不重複的數字")
else:
for i in range (4):
if a[i]==b[i]:
A=A+1
elif b[i] in a:
B=B+1

nien23832 iT邦新手 5 級 ‧ 2023-04-11 09:10:30 檢舉
> a=random.sample([1,2,3,4,5,6,7,8,9],4)
>a=False
>if a[i]==b[i]:
你看一下你的變數吧
echochio iT邦高手 1 級 ‧ 2023-04-12 08:38:54 檢舉
用好一點的IDE 可把語法錯誤解決
再配合ChatGPT 一下就除錯完畢
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

2
kennex_x
iT邦新手 4 級 ‧ 2023-04-11 09:12:40

Dear,

從您的程式碼來看,可以發現以下幾個問題:

  1. b=true ==> b=True
  2. 程式裡面有很多的,Python僅接受'"這類的字串符
  3. 您的While迴圈裏面有一個for迴圈,for迴圈底下又有很多的if條件式,不太能夠識讀您的階層關係??

綜上所述,建議您敘述清楚您的問題,還有建議您使用Markdown來呈現您的問題,這樣才有辦法幫你:)

# Your Code:
import random
a=random.sample([1,2,3,4,5,6,7,8,9],4)
while True:
    ans=str(input(""))
    A=0
    B=0
    a=False
    b=False
    for i in ans:
        if i not in '123456789':
            a=True
        if ans.count(i)>1:
            b=True
    if len(ans)!=4:
        print('請翰入四個相異數字')
    elif '0' in ans:
        print ('輸入數字不得為 o')
    elif a:
        print ("請入數字")
    elif b:
        print('請輪入不重複的數字')
    else:
        for i in range (4):
            if a[i]==b[i]:
                A=A+1
            elif b[i] in a:
                B=B+1
#Error Msg:
TypeError: 'bool' object is not subscriptable

因為在你的Code裡面你令了兩個變數a, b,這兩個變數都是存布林值(bool)而非字串(string),所以是不能做這樣的動作。

rew87516 iT邦新手 4 級 ‧ 2023-04-11 11:08:25 檢舉

他的程式碼大概是從 word 複製出來的吧,所以才會有「」跟「

rew87516 iT邦新手 4 級 ‧ 2023-04-11 11:30:19 檢舉

延續 kennex_x 的階層修正,提出以下邏輯錯誤部分

  1. 命名衝突
    a=random.sample([1,2,3,4,5,6,7,8,9],4)
    # ...
    a=False
    
  2. 型態錯誤 & 邏輯錯誤
    if a[i]==b[i]:
       # ...
    elif b[i] in a:
       # ...
    
  3. 記得補上印出比較結果
    print(f'{A}A{B}B')
    
3
海綿寶寶
iT邦大神 1 級 ‧ 2023-04-11 19:18:35

還是ChatGPT有耐心

第一行的import語句和生成數字的程式碼應該要分開寫,否則可能會產生語法錯誤。
在第5行的input語句後面應該加上冒號(:)以標明這是一個循環的開始。
在第11行和第13行的print語句中,引號不完整,應該要補上缺少的引號。
在第12行和第14行的print語句中,括號不匹配,應該要把左括號改成右括號。
在第16行、第18行和第19行的if語句中,變數名稱大小寫不一致,會產生NameError錯誤。應該統一變數名稱的大小寫。
在第17行的if語句中,應該要把1改成i,否則會一直為True。
在第20行的if語句中,b_flag的拼寫不正確,應該要把小寫的b改成大寫的B。
在第23行的if語句中,應該要把數字轉成整數才能進行比較。
在第25行的if語句中,缺少一

沒寫完的原因是今天 quota 用完了

rew87516 iT邦新手 4 級 ‧ 2023-04-12 16:17:01 檢舉

其實 ChatGPT 就能全部改好了XD

我要發表回答

立即登入回答