Pythonにおけるint()強制タイプ変換

3177 ワード

今日、Python学習交流グループで面白いタイプの変換を見つけました.
a=12.8
print(type(12.8))
print(int(12.8))

実行結果は次のとおりです.
<class 'float'>
12

次は少し疑問なところです.
a = input("input:")
print(type(a))
print(int(a))

異なる入力には異なる出力結果があり、小数を入力すると、エラーが発生します.整数を入力すると正常に動作します.
input:12.8
<class 'str'>
Traceback (most recent call last):
  File "D:/PycharmProject/Study/Chapter3.py", line 66, in 
    print(int(a))
ValueError: invalid literal for int() with base 10: '12.8'
input:12
<class 'str'>
12

私と友达(私たちは菜鳥がお互いに考えているだけです)が考えている方法は:
a = input("input:")
print(type(a))
print(int(float(a)))

タイプを2回変換し、目的の結果を得ました.
input:12.8
<class 'str'>
12

もっと良い方法を示した人もいます
a = eval(input("input:"))
print(type(a))
print(int(a))

結果:
input:12.8
<class 'float'>
12

eval()を検索すると、本当に不思議な関数であることがわかりました.
python evalの妙用
転載先:https://www.cnblogs.com/cathycheng/p/11177135.html