发布
社区首页 >问答首页 >范围函数和列表

范围函数和列表
EN

Stack Overflow用户
提问于 2014-05-01 22:55:53
回答 3查看 113关注 0票数 0

所以,我自学了一些关于蟒蛇的知识,我已经读了大约两天的“范围”,但我似乎不知道如何解决这个问题:

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

问题如下:

  • 名单上有多少个数字?
  • 最低值
  • 最高值

所以我就这样开始了:

代码语言:javascript
代码运行次数:0
复制
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 ()

我知道这是错误的,数字变量什么也不做,因为我没有分配它去做任何事情。也许还有一些其他的东西

从本质上讲,我想让这个项目做的是:

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

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

同样,如果信息输入是

  • 编号:5
  • 最低:2
  • 最高: 12

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

EN

回答 3

Stack Overflow用户

发布于 2014-05-01 23:07:10

代码语言:javascript
代码运行次数:0
复制
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
EN

Stack Overflow用户

发布于 2014-05-01 23:02:50

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

代码语言:javascript
代码运行次数:0
复制
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 ()
票数 0
EN

Stack Overflow用户

发布于 2014-05-01 23:32:21

如果您对神秘版本感兴趣,请看下面的内容:

代码语言:javascript
代码运行次数: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
    )
)

高尔夫可以打到一条线上:

代码语言:javascript
代码运行次数:0
复制
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开始(如果它是奇数,则为偶数),以max_val结尾,除非更早到达最大计数limit。对数字使用生成器表达式,并将其连接到字符串,其中的元素由,分隔。

使用常规的for-循环来减少隐秘性:

代码语言:javascript
代码运行次数:0
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23418081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档