2017-02-17 110 views
-1

這裏有兩個問題,我不知道我的編碼錯誤:計算機科學界?

  1. 在物理學中,對於長度L和初始角A鐘擺,在時間T的水平位移X(T)給出由式

    X(T)= L×cos(A×cos(T×√9.8/ L)) - L-×COS(A)

    寫一個程序這需要輸入的兩行;第一行是L,第二行是A.輸出應該是十行,給出X(0),X(1),X(2),...,X(9)的值。例如,如果第一行輸入爲53.1,第二行輸入爲0.8,則第一行輸出爲0.0,第二行輸出爲53.1 * cos(0.8 * cos(1 *√9.8/ 53.1) ) - 53.1 * cos(0.8)〜2.6689。

    這裏是我有什麼,雖然平地機顯示,我做了一些數學錯誤的:

    import math 
    L = float(input()) 
    A = float(input()) 
    for i in range (0, 10): 
        x = L * math.cos(A * math.cos(i * math.sqrt(9.8/L))-L * math.cos(A)) 
        print(x) 
    
  2. 在該項目中,輸入的第一行是一個整數的寬度。然後,有一些文字行; 「END」行表示文本的結尾。對於每一行文本,您需要打印出一個居中的版本,方法是在左側和右側添加句點,以便每行文本的總長度爲寬度。 (所有輸入行的長度至多爲最大寬度。)居中表示如果可能的話,添加到左側和添加到右側的句點數應該相等;如果需要,我們允許在左側比右側多一段時間。例如,對於輸入

    這裏是我有什麼,但它是不正確的或者:

    width = int(input()) 
    hi=input() 
    while hi != "END": 
        WordInput=input() 
        x=len(WordInput) 
        y=width-x 
        half=y%2 
        if half == 0: 
         a = int(y/2) 
         print("." * a) 
        elif half == 1: 
         b = int(y/2) + 1 
         c = int(y/2) 
         print("." * b,WordInput,"." * c) 
    
+0

對於1,最後一個括號不應該在這裏跟着你的公式。對於2你應該顯示預期的輸出和當前的輸出。 – polku

回答

0

它可以幫助你調試,如果你的輸入有文字提示,如width = int(input("enter width: ")),其中會給你一個更好的想法,你的輸入將被存儲在代碼中。

我沒有看到#1的問題,但是我已經學習了物理學已經有一段時間了。如果您的分級師說只是數學錯誤,請仔細檢查您使用的公式,並在代碼中添加適當的括號以確保正確的操作順序完成。

#2有幾個問題。首先,你的程序要求輸入錯誤的次數。你的循環取決於變量hi,你只能指定一次;一旦你的代碼進入循環,沒有什麼會改變它到「結束」,循環將永遠不會退出。不僅如此,您輸入的第一個單詞(在hi提示符處)不會被循環中的代碼考慮,因此除了「END」之外的任何內容都將被忽略。你會想更多的東西是這樣的:

WordInput=input() 
    while WordInput != "END": 
     # Do your processing and printing code here 
     (...) 
     # Then get some new input at the end of the loop    
     WordInput=input() 

WordInput新的價值進行評估的循環重新開始的時候。

二,看看你的if聲明。您正確地確定長度是偶數(一半== 0),但是即使您不告訴代碼實際打印輸入單詞,也只是期間!在實踐中,最好避免使用多個類似的打印語句來設置if/else塊;如果您想要返回並更改其格式,則必須記得手動更改其他格式。隨着代碼變得越來越複雜,這將成爲一個真正的痛苦,所以通常最好儘可能地濃縮您的打印語句。沒有太多的改變這裏的結構是我會怎麼做:

if half == 0: 
     a = int(y/2) 
    elif half == 1: 
     a = int(y/2) + 1 
    b = int(y/2) 
    print("." * a,WordInput,"." * b) 

這樣,b在這兩種情況下和相同的打印語句將執行不管分配。

第三,由代碼打印並居中的任何單詞都用空格填充。這是因爲當你給print()多個參數時,默認情況下它們被空格連接。要覆蓋它,可以將分隔符參數更改爲空字符串(或其他任何您需要的);

>>>print("." * 4, "Hey", "." * 4) 
.... Hey .... 

>>>print("." * 4, "Hey", "." * 4, sep="") 
....Hey.... 
0

對於1.圓括號是錯誤的!

import math 
L = float(input()) 
A = float(input()) 
for i in range (0, 10): 
    x = L * math.cos(A * math.cos(i * math.sqrt(9.8/L)))-L * math.cos(A) 
    print(x)