刚开始学习Python,这是我的问题:
我正在输入 a 和 b ,如果是<然后输出a到b按升序排列。如果a> b然后输出按降序排列。当我放入< b它有效,但是当> b时它什么也没给我。这是代码:
a = int(input('input a number for a: '))
b = int(input('input a number for b: '))
numbers = list(range(a, b + 1))
if a < b:
print(numbers)
else:
numbers.sort(reverse=True)
print(numbers)
这是&gt;的输出。 B:
input a number for a: 10
input a number for b: 1
[]
处理完成,退出代码为0
答案 0 :(得分:0)
当a为10且b为2时,您的代码正在执行:
numbers = list(range(min(a, b), max(a, b) + 1))
也许你想这样做:
Array.from(document.querySelectorAll('[id^="switch-wrapper-"] input[type=checkbox]')).forEach(function(elem){
elem.onchange=function(){
this.parentNode.querySelector('p').innerHTML = (this.checked) ? 'Not Visible' : "Visible";
var data = '#card-'+ this.id.split('-')[1];
document.querySelector(data).classList.toggle('card-disabled');
$.ajax({
data: {data},
type: 'POST',
url: 'backend/menu/disable-item.php',
success: function (data) {
console.log($("#visibilityList").serializeArray = data);
}
});
}
});
答案 1 :(得分:0)
怎么样
a = int(input('input a number for a: '))
b = int(input('input a number for b: '))
print(list(range(a, b + (b >= a) - (a > b), 1 - 2 * (a > b))))
答案 2 :(得分:0)
因为打印的最后一个值range()
是start + step * i
的最大值,小于end
。如果end
小于start
且step
为正数,则没有符合该条件的数字:
10 + i * 1
永远不会小于1(其中i
是正整数)
相反,请在范围之前执行此操作:
if a > b:
a, b = b, a
如果情况并非如此,它将确保a始终是向前移动的较小数字。
如果您想保留升序/降序:
if a > b:
a, b = b, a
rev = True
然后,在构建列表之后
if rev:
numbers.reverse()
答案 3 :(得分:0)
好的,你想做的就是这个......
a = int(input('input a number for a: '))
b = int(input('input a number for b: '))
list = []
if a > b:
while a > b:
list.append(a)
a -= 1
答案 4 :(得分:0)
您可以将numbers
更改为以下内容:
numbers = list(range(a, b + 1)) if a < b else list(range(b, a + 1))
你的代码就可以了。您也可以通过以下方式缩短代码:
a = int(input('input a number for a: '))
b = int(input('input a number for b: '))
numbers = list(range(a, b+1)) if a < b else list(range(b, a+1))
print numbers if a < b else sorted(numbers, reverse=True)