python接收用户输入数字_用户输入的数字上的“计数数字”(Python 2.x)

既然你也希望能够计算浮点数的数字,那么仅仅做 n/10 是不够的 . 使用浮点值,您的循环将最终变为无限,因为它将执行浮点除法而不是int除法 . (例如 16.3 / 10 = 1.63 - > 1.63 / 10 = .163 等 - 它永远不会达到 0 )

为避免此问题,我建议将数字作为字符串处理,并计算字符串中的数字字符数 .

def num_digits(n):

count = 0

curr = n # remaining string you're currently evaluating

while (curr != ''):

digit = curr[len(curr)-1] # get final char

curr = curr[:len(curr)-1] # trim last char off the string

if (not digit.isdigit()):

# ignore things like decimal points or negative signs

continue

count += 1

return count

while True:

value = raw_input('Enter a number:\n') # keep it in string form

try:

convert = float(value) # if it's a valid float, then it's also a valid int

break

except:

print "not a number. enter a valid number"

nd = num_digits(value)

print('{} has {} digits'.format(value, nd))

样本输出:

# float number, ignores negative sign and decimal point

$ python script.py

Enter a number:

-16.3

-16.3 has 3 digits

# asks for input until it has a valid number

$ python script.py

Enter a number:

foo

not a number. enter a valid number

Enter a number:

blah3

not a number. enter a valid number

Enter a number:

89

89 has 2 digits

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值