2017-02-17 111 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)