范围功能和列表

时间:2014-05-01 22:55:54

标签: python python-3.x input range

所以,我自学了一些关于蟒蛇的知识,而且我一直在阅读"范围"现在大约2天了,但我似乎无法弄清楚如何解决这个问题:

我想编写一个程序,在询问一些问题之后打印出给定范围内的偶数列表......

问题是:

  • 列表中有多少个号码
  • 最低值
  • 最高值

所以我开始这样:

def main():

    numbers = int(input("How many numbers are in the list: "))
    lowest = int(input("Please enter the lowest range value to start with: "))
    highest = int(input("Please enter the highest range value to end with: "))

    for i in range (lowest, highest+2, 2):
        print (i)

main ()

我知道这是错的,数字变量没有任何作用,因为我没有指定它做任何事情。还有一堆其他的东西

基本上我想让程序做的是:

  • 假设数字变量输入为6
  • 最低变量输入为2
  • 最高为12

打印输出应为2,4,6,8,10,12 - 从输入的最低值到最高值输入的总共6个数字。

同样,如果输入的信息是

  • 数字:5
  • 最低:2
  • 最高:12

我想要返回一些错误,因为用户超过数字长度,因为选择是5。

3 个答案:

答案 0 :(得分:1)

def main():

    numbers = int(input("How many numbers are in the list "))
    lowest = int(input("Please enter the lowest range value to start with: "))
    highest = int(input("Please enter the highest range value to end with "))
    if (highest+2 - lowest)/2 == numbers:
        for i in range (lowest,highest+2,2 ):
            print (i)
    else:
        print ('no coinciden los numeros, vuelve a intentarlo')

main ()

这有帮助吗?

答案 1 :(得分:0)

如果您想在用户输入不一致的输入时抛出错误(即请求的数量与范围内的预期数字不匹配),您可以进行显式检查并exit如果检查错误不通过。

from sys import exit

def main():
    numbers = int(input("How many numbers are in the list "))
    lowest = int(input("Please enter the lowest range value to start with: "))
    highest = int(input("Please enter the highest range value to end with "))

    if len(range (lowest,highest+2,2 )) != numbers:
       print("The number of numbers requested is unexpected!")
       exit(1)
    for i in range (lowest,highest+2,2 ):
        print (i)

main ()

答案 2 :(得分:0)

如果你对一个神秘版本感兴趣,请点击这里:

limit = 4
min_val = 3
max_val = 22

# output: 4, 6, 8, 10    
print(
    ", ".join(
        str(j) for i, j in
            enumerate(
                range(
                    min_val + (0 if min_val % 2 == 0 else 1),
                    max_val + 2,
                    2
                )
            )
        if i < limit
    )
)

高尔夫可以单线:

print(", ".join(str(j)for i,j in enumerate(range(min_val+(0if min_val%2==0 else 1),max_val+2,2))if i<limit))

min_val开始(+1,如果它是奇数,则为偶数)并以max_val结束,除非之前达到最大计数limit。生成器表达式用于数字并连接到字符串,元素由, 分隔。

使用常规for循环不那么神秘:

limit = 4
min_val = 3
max_val = 22

if min_val % 2 != 0:
    min_val += 1

for i, j in enumerate(range(min_val, max_val + 2, 2)):
    if i >= limit:
        break
    print(j)