Python 验证基数
我正在尝试制作一个程序,用一个基值检查一个正整数,如果该数字的所有数字都严格小于基值,则返回True,否则返回false。我取得的一些成果包括:Python 验证基数,python,Python,我正在尝试制作一个程序,用一个基值检查一个正整数,如果该数字的所有数字都严格小于基值,则返回True,否则返回false。我取得的一些成果包括: >>> base_and_number(12345, 2) False >>> base_and_number(12345, 8) True >>> base_and_number(9, 5) False >>> base_a
>>> base_and_number(12345, 2)
False
>>> base_and_number(12345, 8)
True
>>> base_and_number(9, 5)
False
>>> base_and_number(10110, 2)
True
这些都是绝对正确的,我编写了这段代码来确保这一点。问题是,我不确定我是否用最好的方法来处理它,因为我想找到一种更有效的方法来评估以验证Base-n数字。这是:
def base_and_num(number, base):
int_list = []
for digit in str(number):
int_list.append(int(digit))
result = []
for i in range(len(int_list)):
if int_list[i] < base:
result.append(int_list[i])
if len(result) == len(str(number)):
return True
else:
return False
def base_和_num(数字、基数):
int_list=[]
对于str中的数字(数字):
int_list.append(int(数字))
结果=[]
对于范围内的i(len(int_列表)):
如果int_列表[i]
有没有更简单的方法?我觉得有一种更明显的方法可以做到这一点,但我想不出来 您可以使用理解列表简化代码:
def base_and_num(number, base):
return all([str(base)>digit for digit in str(number)])
使用ascii顺序与自然顺序兼容的事实。很好
def base_and_num(number, base):
return all(int(digit) < base for digit in str(number))
def base_和_num(数字、基数):
返回全部(int(digit)
尝试转换它,看看是否失败
try:
int(str(number), base)
except ValueError:
print('{} is invalid base for {}'.format(base, number))
演示:
>编号=456
>>>基数=7
>>>整数(str(数字),基数)
237
>>>基数=3
>>>整数(str(数字),基数)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:基为3的int()的文本无效:“456”
尽量保持对您的代码的真实性(我会使用减少,但是,哦,我认为我们不应该在这里解释这种方法)
是的,有;首先,您的else:continue
是多余的。你可以省略它
我会说,一旦遇到大于基数的第一个数字,就返回False
。如果没有返回False
,则返回True
。差不多
def base_and_num(number, base):
number = int(number) ## making sure we don't break on floats, strings etc.
while number != 0:
digit = number % 10 #modulo
if digit > base:
return False #function exits here!
number = number / 10 #integer division
return True
这里有一个方法:
def basecheck(number,base):
return all([int(x) < base for x in str(number)])
def基本检查(数字、基本):
返回全部([int(x)
这不是一个完整的答案,而是一个可以让你自己找到更好答案的提示
您不需要额外的整数列表,可以在python中直接迭代字符串
遇到不符合条件的数字时,立即返回false。如果没有,则返回true
一种选择是:
def base_and_num(number, base):
for i in str(number):
if base <= int(i):
return False
return True
def base_和_num(数字、基数):
对于str中的i(编号):
如果base,另一种方法是让Python为您完成工作。将数字转换为字符串,然后尝试使用指定的基数将其转换回整数。如果任何数字等于或超过基数,Python将抛出一个ValueError
def base_and_number(number, base):
try:
int(str(number), base)
except ValueError:
return False
else:
return True
这适用于负整数和正整数,而严格比较单个数字的答案则不适用
def base_and_number(number, base):
try:
int(str(number), base)
except ValueError:
return False
else:
return True