初学者python程序

时间:2014-03-27 05:34:23

标签: python loops integer addition

决定帮我为我的好友做一个实验室,第一次做这个,所以请不要取笑我的代码大声笑。我必须得到一个数字“num”,表示要添加到阵列的数量,然后是总数。然后,我想从数组的大小添加用户定义的数字。然后,如果这些数字中的任何一个加起来然后打印出来,否则打印抱歉。无法理解为什么它不起作用:(

EXTRA EDIT:问题是,我的脚本没有显示总计加起来的数字,只有打印('抱歉')

编辑:我在这个java和C之前学过,无法弄清楚foor循环或变量类型是如何实例化的。

num = int(input('Please enter the amount of numbers you wish to use: '))
total = int(input('Please the total wild card number: '))
hasValue = int(0)
ar = []
i = int(0)
j = int(0)
k = int(0)
l = int(0)
m = int(0)


while (i < num):
    j = i + 1
    inNum = input('Please enter number %d:' %j)
    ar.append(inNum)
    i = i + 1

while (k < num):
    while(l < num):
        if ((ar[k]+ar[l])==total):
            print(ar[k] +' , '+ ar[l])
            hasValue = hasValue + 1
        l = l +1
    k = k + 1
if (hasValue == 0):
    print('sorry, there no such pair of values')

3 个答案:

答案 0 :(得分:1)

这是如何在python中执行for循环:

for x in range(10):
    # code for the for loop goes here

这相当于:

for (int x = 0; x < 10; x++) {
    // code for the for loop goes here
}

...在C ++中

(注意没有初始化变量'x'。当你做一个for循环时,python会自动初始化它。

以下是我认为你想做的事情:

def main():
    num = int(input("Enter the amount of numbers: "))
    total = int(input("Enter the total: "))
    array = []
    counter, elem = 0, 0
    for user_numbers in range(num):
        array.append(int(input("Please enter number: ")))
    for each_element in array:
        counter += each_element
        elem += 1
        if counter == total:
            print(array[:elem])
            break
    if counter != total:
        print("sorry...")

main()

答案 1 :(得分:1)

当我得到它时,您当前的脚本正在寻找两个结果数字,其中总和等于total,但应该搜索数组中的任何对,对?所以,如果我们有

ar = [1, 2, 3]

total = 5

程序应显示2, 3对。但它找不到1+3的{​​{1}}。

以下是一些一般性建议:

  1. total=4调用中存在错误,其中打印了对(字符串应该在str + int并置中首先出现)。使用格式

    print

    或打印结果为元组

    print('%d, %d'.format(ar[k], ar[k])

  2. 使用print(ar[k], ar[l])代替for k in range(num)

  3. while最好是布尔值

  4. 嗯,这是我的解决方案(python2.7)

    hasValue

答案 2 :(得分:0)

while (k < num):
    while(l < num):
        if ((ar[k]+ar[l])==total):
            print(ar[k] +' , '+ ar[l])
            hasValue = hasValue + 1
        l = l +1
    k = k + 1

除了循环不是“pythonic”之外,你需要在k循环中初始化l = 0.

while (k < num):
    l = 0
    while(l < num):
        if ((ar[k]+ar[l])==total):
            print(ar[k] +' , '+ ar[l])
            hasValue = hasValue + 1
        l = l +1
    k = k + 1

或更多python方式:

for num1 in ar:
    for num2 in ar:
        if num1+num2==total:
            print(num1 +' , '+ num2) # not sure about this syntax. I am a python beginner myself!
            hasValue = hasValue + 1