首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python For Loops -枚举

Python For Loops -枚举
EN

Stack Overflow用户
提问于 2022-03-30 14:11:58
回答 1查看 70关注 0票数 0

你能帮我做这个吗?尝试了下面的代码,但不起作用。我想打印出附加的输出。提前谢谢。

代码语言:javascript
复制
num_display = int(input('Please enter how many numbers you would like displayed: '))
inc_value = int(input('Please enter the increment value: '))
num_counter = 1
num_sequence = range(1, num_display + 1 , inc_value)
value_counter = range(1, num_counter, inc_value)

for each_num in num_sequence:
    print(f'Counter: {num_counter} value: {each_num}')
    num_counter = num_counter + 1
    value_counter = value_counter + 1
print("Bye.")

输出应该是什么样子?

代码语言:javascript
复制
Please enter how many numbers you would like displayed: 12
Please enter the increment value: 3
Counter: 1 value: 1
Counter: 2 value: 4
Counter: 3 value: 7
Counter: 4 value: 10
Counter: 5 value: 13
Counter: 6 value: 16
Counter: 7 value: 19
Counter: 8 value: 22
Counter: 9 value: 25
Counter: 10 value: 28
Counter: 11 value: 31
Counter: 12 value: 34
Bye.

为了满足其他条件,我对代码进行了更改,但在num_sequence = range(1,stop_value,inc_value) TypeError:' str‘对象中,将str转换为int:第11行后得到了这个错误。

我的代码:

代码语言:javascript
复制
num_display = input('Please enter how many numbers you would like displayed: ').strip()
inc_value = input('Please enter the increment value: ').strip()
zero_value = 0

if num_display.isdigit() and inc_value.isdigit():
    if int(num_display) != zero_value or int(inc_value) != zero_value:
        stop_value = int(num_display) * int(inc_value)
        num_sequence = range(1,stop_value,inc_value)
        for num_counter, each_num in enumerate(num_sequence):
                        print(f'Counter: {num_counter + 1} value: {each_num}')
        print('Bye.')
    else:
        print("I can't increment in steps of 0.")     

else:
    print('Positive non zero integers only please.')

我让它在下面使用,但它没有正确地打印另一个,请参见屏幕截图:

代码语言:javascript
复制
num_display = input('Please enter how many numbers you would like displayed: ').strip()
inc_value = input('Please enter the increment value: ').strip()
zero_value = 0

if num_display.isdigit() and inc_value.isdigit():
    if int(num_display) != zero_value and int(inc_value) != zero_value:
        stop_value = int(num_display) * int(inc_value)
        num_sequence = range(1, int(stop_value), int(inc_value))
        for num_counter, each_num in enumerate(num_sequence):
                        print(f'Counter: {num_counter + 1} value: {each_num}')
        print('Bye.')
    else:
        print("I can't increment in steps of 0.")     

else:
    print('Positive non zero integers only please.')

在另一个测试上工作但不打印5

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-30 14:17:12

您的代码有一些问题。每次迭代之后,range()都会通过inc_value自动增加计数器,所以不要在循环中手动更新计数器。

另外还有一个数学问题。如果要打印一个num_display乘以inc_value递增的数字,则计算最后一个数字(因此range()end值)的公式是start_value + inc_value * num_display,而不是num_display + 1。在您的例子中,start_value1

要以pythonic方式获得迭代次数,请使用enumerate()

代码语言:javascript
复制
num_display = int(input('Please enter how many numbers you would like displayed: '))
inc_value = int(input('Please enter the increment value: '))
start_value = 1
num_sequence = range(1, start_value + num_display * inc_value, inc_value)

for num_counter, each_num in enumerate(num_sequence):
    print(f'Counter: {num_counter + 1} value: {each_num}')
print("Bye.")

预期产出

代码语言:javascript
复制
Please enter how many numbers you would like displayed: 12
Please enter the increment value: 3
Counter: 1 value: 1
Counter: 2 value: 4
Counter: 3 value: 7
Counter: 4 value: 10
Counter: 5 value: 13
Counter: 6 value: 16
Counter: 7 value: 19
Counter: 8 value: 22
Counter: 9 value: 25
Counter: 10 value: 28
Counter: 11 value: 31
Counter: 12 value: 34
Bye.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71678837

复制
相关文章

相似问题

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