[Python] 關於python - 討論區

[Python] 關於python

文章瀏覽次數 712 文章回覆數 16

cello

cello圖像(預設)

2021-07-08 16:42:22

From:219.85.165.40

不得誇獎特種兵在教學區對於python的系列課程,內容淺顯易懂讓我這從未接觸程式語言的都可以自己學習入門。 閱讀了講義內容以及收聽講座影音,現也盡到第三章的尾端了,特此來請教3-1.py的解答,貞還沒想到運用前兩張所學的函數與變數應如何才能達成這道題目的任務,初學階段不令指教,謝謝。

留言

#1

特種兵

特種兵圖像(預設)

2021-07-08 17:53:26

From:111.249.164.173

原來有除了本班學員之外的人在看呀,真是太好了。
我的想法是

  1. 先計算出所要列印字串的長度
  2. 用 20 去減掉這個值,這樣我們就能得到那個字串前面應該要有多少個空格數
  3. 知道從第幾格開始印,就產生幾個空格再加上那個字串,用print印出來就行囉

#2

cello

cello圖像(預設)

2021-07-09 09:26:45

From:219.85.165.40

def right(test):
x = len(test)
n = 20 - x

# 這邊已經算出他的長度,但如何自動填入15個空格

print(n)

right('cello')

#3

特種兵

特種兵圖像(預設)

2021-07-09 09:50:33

From:111.249.164.173

先列出講義有提到的:

  • ' ' * n

#4

cello

cello圖像(預設)

2021-07-09 10:45:27

From:219.85.165.40

def right(test):
x = len(test)
n = 19 - x

# 好像要-19最後一個字才能在20方的位置,是因為從0開始算1的原因嗎?

print(' ' * n, test) 

right('cello')

# 這樣應該算成功了,在詢問串列的修改及彈出需要引入其他含市庫嗎?

#5

Maxe

Maxe圖像(預設)

2021-07-09 12:13:57

From:36.230.4.74

rightJustify('test')
輸出應該是:
test
先 16 個空格,最後加上 test 剛好二十格這樣。
所以 20 - len('test') = 16

另外關於串列的部分,建立一個串列之後,他包含了許多好用的方法,這些方法是串列自帶的,不需要引入函示庫。

#6

cello

cello圖像(預設)

2021-07-09 12:56:46

From:219.85.165.40

應該說test是一個會變動的參數,不管輸入什麼字都可以,我在我這邊輸入cello如果用len算出來的字數-20書書的字母最後依自算了一下會在21方的位置,但如果將它改成19則可正確結束在20方的位置。真有趣!

#7

特種兵

特種兵圖像(預設)

2021-07-09 14:31:19

From:111.249.146.164

len(cello) = 5
20 - 5 = 15
' ' * 15 = 15個空格
再 + cello 是正確的
你會多一格,我猜是因為在 print 用了逗號,用了逗號它會自動幫你空一格
如果你是用加號應該就不會有這個問題了

#8

cello

cello圖像(預設)

2021-07-09 16:18:00

From:219.85.165.40

正解,以驗證的確是,的問題

#9

cello

cello圖像(預設)

2021-08-12 10:28:23

From:61.64.210.215

def factorial(n):
if n == 0:

# 請問這邊的return想要返回多少就能是多少?

    return 1
else:

# 這邊的n因為還沒-1所以帶入1,結果才會是1*1

    recurse = factorial(n - 1)
    result = n * recurse
    return result

print(factorial(3))

# 因為帶入引述為3所以會持續接乘到3為止,不知這樣的理解是否正確?

#10

阿慶

阿慶圖像

2021-08-12 20:06:51

From:219.91.55.9

蒂迴我真的很不熟,也覺得不好懂XD

#11

特種兵

特種兵圖像(預設)

2021-08-13 09:51:20

From:211.23.21.202

對的,return 就是寫多少就回傳多少

# n 一開始是 3
# 第一圈
    recurse = factorial(3 - 1)
    result = 3 * recurse
    return result
# 整理一下 else 裡面就是
    recurse = factorial(2)
    result = 3 * factorial(2)
    return 3 * factorial(2)
# 那 factorial(2) 就是
    recurse = factorial(1)
    result = 2 * factorial(1)
    return 3 * 2 * fatorial(1)
# 那 factorial(1) 就是
    recurse = factorial(0)
    result = 1 * factorial(0)
    return 3 * 2 * 1 * fatorial(0)
# 那 factorial(0) 就是
if n == 0:
    return 1
# 最後就是
3 * 2 * 1 * 1

其實我也不確定是不是這樣,書上很少把每一圈的每個變數解釋清楚

#12

此篇留言已被刪除。

#13

cello

cello圖像(預設)

2021-08-13 22:03:01

From:219.85.158.121

# 了解,所以累加也可使用同樣的套路,像這樣

def factorial(n):
if n == 10:
return 10
else:
recurse = factorial(n + 1)
result = n + recurse
return result

print(factorial(0))

#14

阿慶

阿慶圖像

2021-08-14 06:27:45

From:219.91.55.9

如果 n == 10
那我輸入
print(factorial(11))
應該就會爆炸XD

#15

cello

cello圖像(預設)

2021-08-15 19:03:44

From:219.85.158.121

這次沒有要爆炸,只是運用地回的技巧讓他從0自動累加到10
變數的內部的變化真的很重要,如果沒有搞清楚python解釋氣的讀取狀態很容易搞昏!