【题目描述】:

给定一个浮点数,要求得到该浮点数的个位数。

【输入描述】:

一行,包括一个浮点数。

【输出描述】:

一行,包含一个整数,为输入浮点数对应的个位数。

输入 13.141

输出  3

一、取输入的字符串小数点位置的索引,取字符串的索引

【执行通过的代码】:15ms

a = input()

idx = inp.index(".")-1

print(a[idx])

a= input()

print(a[a.index(".")-1])

注意:print(input()[input().index(".")-1])  执行报错。

代码解释:

a= input() 将输入的字符串赋值为a

a.index("."):用字符串的index方法获得指定字符串.的索引值。

idx = a.index(".")-1 获得个位数的索引值。

print(a[idx])  按照字符串a的个位数位置的索引输出对应的值。

二、用%d格式化整数+取模,直接输出:

【执行通过的代码】:

a = float(input())

print('%d' % (a%10))

print('%d' % (float(input())% 10))

代码解释:%d格式化整数

print('%d' % (1029.234%10))  # 输出为4。

print('%d' %(1029.234))      # 输出为1029

三、将字符串转为浮点型,转为整型,取模

【执行通过的代码】:

print(int(float(input()))%10)

四、将字符串转为浮点型,用整除1获取整数部分,取模获得个位数后转为整型

【执行通过的代码】:

print(int((float(input())//1)%10))

代码解释:n=float(input()) #一定要设置输入的数据类型:浮点型

n=n//1   # //整除取整:去除小数点

n=n%10  # 用%来取模,获得个位数:通过十位数除法取个位数

 

n=123.120123//10   # //整除取整:去除小数点

print(n) 输出为12.0

五、将字符串转为浮点型,用整除1获取整数部分,通过减10获得个位数。

【执行通过的代码】:

a = float(input(""))  # 或 a = float(input())  或a = eval(input())

print(int(a-(a//10)*10))

代码解释: a//10获得浮点数的整十倍数,a-(a//10)*10获取个位数和小数点后的值。

【执行通过的代码】:

n = float(input())

n = n // 1

while n >= 10:

    n -= 10

print(int(n))

代码解释:n=n//1   # //整除取整:去除小数点,但n=123.12//10  输出为12.0,带一个小数点和0.

后用while循环对n不断减10,减到n小于10,剩余个位数.0。 用int(n)去掉小数点和0。

六、将字符串转为浮点型,转为整型,转为字符串,取字符串的索引:

【执行通过的代码】:

a= str(int((float(input()))))

print(a[-1])

print(str(int((float(input())))) [-1])

七、将字符串通过eval或float转为表达式,转为整型,对整型求模

eval(str) 用来计算 字符串中的有效Python表达式,并返回一个对象(表达式的值)。对于大多数的类型,eval(repr(obj)) == objobj=type对象例外。

eval就是执行的意思,相当于你在命令行下敲的命令。不管是不是数值型,只要python能执行的,他都给你执行了。

input() 和 input("") 含义相同。

input进去的是字符串,eval把字符串直接转成python的命令

在这个题目中,eval(input(""))相当于float(input("")),把输入内容转换成浮点数

【执行通过的代码】:先保留整数部分,后取模

print(int(eval(input())) % 10)  

print(int(eval(input()))%10)

代码解释:

eval(input()) 表示把输入的字符串转为对应的数字表达式。

int(eval(input()) 是将上面的这个float型数值转为 int型,即去掉小数部分。

int(eval(input())) % 10 表示对这个整数型数字,用求余数的方式,获得个位数。

【执行通过的代码】:先取模,后保留整数部分

print(int(eval(input())%10))

代码解释:

eval(input()) 表示把输入的字符串转为对应的数字表达式。

eval(input())%10 获得表达式取模的个位数和小数点后面的数字

int(eval(input())%10): 取整删除小数点后面的位数。

 

print(eval('123456.7890123')%10) 输出:6.789012299996102

【执行通过的代码】:用float替代eval来获得浮点数

print(int(float(input()))%10)

a = float(input())

print(int(a%10))

a = int(float(input()))

print(a%10)

代码解释:float(input())将输入的字符型转为数字型,这里和上一个代码中的eval(input())等价。

八、分割字符串后赋值给2个变量,对整型变量求模:

【执行通过的代码】:

a, b =map(int, input().split("."))

print(a%10)

代码解释:将输出的字符串分别赋值

九、分割字符串后赋值给2个变量,对整数部分的字符串取索引:

【执行通过的代码】:取正数索引

a,b= input().split('.')

l=len(a)

print(a[l-1])

代码解释:一般用 input().split() 作为输入。

string.split(str="", num) 分割字符串,以 str 为分隔符拆分 string,如果 num 有指定值,则仅分隔 num + 1 个子字符串,str 默认包含 '\r', '\t', '\n' 和空格

a,b= input().split('.')表示将输入的实数按照整数部分、小数部分分别复制为a和b两个变量。

l=len(a) 表示求整数部分的字符串长度。

a[l-1]表示,求a这个字符串的最后一位。索引从0开始,最后一位索引是字符串的长度减一。

【执行通过的代码】:取负数索引

a , b = input().split('.')

print(a[-1])

a , b = input().strip().split('.')

print(a[-1])

代码解释:a[l-1]表示,求a这个字符串的最后一位。用负切片的方式,从后往前取第一位。

十、分割字符串后赋值给1个变量_变量后取模或取整

【执行通过的代码】:

a,_=input().split('.')

print(a[-1])

【执行通过的代码】:

str,_ = map(int,input().split('.'))

print(str%10)

代码解释:

a,_=input().split('.')  

a,_ 表示只关心输入串里的第一个分隔符前面的那个字符串

a是字符串,_也是一个变量,_是包含了后面所有的项了,所以是列表。print(_) 提示<class 'list'>。

十一、分割字符串赋值给一个列表,对列表的整数部分求模:

【执行通过的代码】:

a = input().split(".")

print(int(a[0])%10)

或print(int(input().split(".") [0])%10)

代码解释:a = input().split(".") 表示将输入的实数按照整数部分、小数部分分别存入一个list列表。

例如:

a = '10.49345'.split(".")

print(a)  # 返回为list ['10', '49345']

十二、分割字符串赋值给一个列表,对列表的整数部分字符串取索引

【执行通过的代码】:取-1索引

a = input().split('.')[0]

print(a[-1])

b = input().split('.')

print(b[0][-1])

或print(input().split('.')[0][-1])

代码解释:同上,inputStr.split('.') 这个list数组的第一个元组赋值为a,求a这个字符串的最后一个字符。

【执行通过的代码】:取-1: 索引

print(input().split(".")[0][-1:])

代码解释:[-1:]和[-1]含义相同。

  1. 分割字符串赋值给一个列表,将列表的整数部分字符串转为list列表,按列表长度减1取索引

【执行通过的代码】:取len(a)-1索引

a = list(input().split('.') [0])
print(a[len(a)-1])

十三、分割字符串赋值给一个列表,将列表的整数部分字符串转为list列表,对列表取索引:

【执行通过的代码】:

print(list(str(input()).split(".")[0])[-1])

print(list(input().split(".")[0])[-1])

代码解释:

str(input()).split(".")    # 使用分割字符串,产生一个列表,共有2个元素,1是整数部分,2是小数部分。

str(input()).split(".")[0]  #取出整数部分字符串

list(input().split(".")[0])  # 将整数部分的字符串转为一个列表

list(str(input()).split(".")[0])[-1]  # 取这个列表的最后一个元素

十四、用for循环遍历输入的字符串,定位小数点的索引位置,取个位数的索引:

【执行通过的代码】:

a = input()
for i in reversed(range(len(a))):  #逆序for 同  for i in range(len(a)-1, -1, -1):
# for i in range(len(a)-1): 为正序查找
    if a[i]=='.':
        break
print(a[i-1])

  

代码解释:

range是个迭代器,不是列表,它是取一个算一个。

for循环 因为reversed函数(逆序处理),是按照从最后往前找,找到小数点.之后,就退出了。

for循环从n到1查找 和for循环从1到n查找,都可以,只要找到小数点的位置即可。

中间for循环,并没有改变a的顺序。

测试用的代码-1:for循环从n到1查找

可以使用range(len(a)-1, -1, -1)来替代reversed(range(len(a)))。都是从最后一位往前找小数点

a = '123456.7890123'
for i in reversed(range(len(a))):   # for i in range(len(a)-1, -1, -1):
    print(i)   
    if a[i]=='.':
        break
print(a[i-1:len(a)])   # a[i-1:len(a))], 这个本来就是按照a的原来的序列

要反向遍历一个序列,首先指定这个序列,然后调用 reversed() 函数:

>>> for i in reversed(range(1, 6, 2)):
>>>      print(i)
5
3
1

测试用的代码-2:for循环从1到n查找

可以用for i in range(len(a)-1) 实现正序的查找

a = '123456.7890123'
for i in range(len(a)-1):  # for i in list(range(len(a))):
    print(i)
    if a[i]=='.':
        break
print(a[i-1:len(a)])

其他说明:

如果要输出一个逆排序的列表,需要for循环里重新赋值一个新的列表b

十五、异常的写法

【执行通过的代码】:

while True:
    try:
        print(input().split('.')[0][-1])  # 或 print(int(float(input()))%10)
    except:
        break