#20334: Python可能遇到的困難


TCFSH69 (TCFSH)


1.想要使用while卻怕EOFError

Sol:試試下列寫法(try & except)

while 1:

    try:

        ...

    except EOFError:

    break

 

2.質因數分解

Sol:最簡單的想法就夠快了 如下

用for i in range(2,n+1)

讓i去除n

如果可以整除

那就讓n = n/i

 

3.煩人的輸出格式

Sol.1:我自己是用兩個陣列(box1,box2)分別記錄n所含的質數,以及每個質數的個數

Sol.2:重點有二:利用print(str()+str())去掉預設的空格,以及利用tmp(一開始=0)來計算到底i是不是最後一個質數了,便可阻止'*'繼續印出

for i in box2:
    if box1.count(i) == 1:
        print(str(i),end = ' ')
    else:
        print(str(i)+'^'+str(box1.count(i)),end = ' ')
        tmp = tmp + 1
    if tmp != len(box2):
    print('*',end = ' ')
print()

#20708: Re:Python可能遇到的困難


devil1004@livemail.tw (yanru)


1.想要使用while卻怕EOFError

Sol:試試下列寫法(try & except)

while 1:

    try:

        ...

    except EOFError:

    break

 

2.質因數分解

Sol:最簡單的想法就夠快了 如下

用for i in range(2,n+1)

讓i去除n

如果可以整除

那就讓n = n/i

 

3.煩人的輸出格式

Sol.1:我自己是用兩個陣列(box1,box2)分別記錄n所含的質數,以及每個質數的個數

Sol.2:重點有二:利用print(str()+str())去掉預設的空格,以及利用tmp(一開始=0)來計算到底i是不是最後一個質數了,便可阻止'*'繼續印出

for i in box2:
    if box1.count(i) == 1:
        print(str(i),end = ' ')
    else:
        print(str(i)+'^'+str(box1.count(i)),end = ' ')
        tmp = tmp + 1
    if tmp != len(box2):
    print('*',end = ' ')
print()


我第一次AC的作法跟你吃差不多

後來想到 質因數分解的迴圈可以 for i in range(2,n+1) :

變成 for i in [2] + list(range(3,n+1,2):

跳過除了 2 以外的所有偶數

AC的時間 縮短了 0.9秒  (2S -> 1.1S)

#20938: Re:Python可能遇到的困難


asnewchien@gmail.com (david)