为什么在某些代码后它会自动更改数据类型

时间:2019-07-19 13:05:05

标签: python-3.x types

实际上我在练习代码,然后这个问题出现了

假设这是我的代码:

import random
randomnumber=random.randrange(0,100)
print(randomnumber)
input_user=23 #now input_user is int

再输入一些代码:

像这样:

import random
randomnumber=random.randrange(0,100)
print(randomnumber)
input_user=23  #now input_user is str

while input_user !=randomnumber:
    input_user=0
    print("enter number")
    input_user=input()
    if input_user < randomnumber:
        print("very less")
    elif (input_user > randomnumber ):
        print ("very big")
    else:
        print("correct :"+randomnumber)

您可以看到这是我的问题

2 个答案:

答案 0 :(得分:2)

为您固定

import random
randomnumber=random.randrange(0,100)
print(randomnumber)
input_user=23  #now input_user is str

while input_user !=randomnumber:
    print("enter number")
    input_user=int(input())
    if input_user < randomnumber:
        print("very less")
    elif input_user > randomnumber:
        print ("very big")
    else:
        print("correct :"+str(randomnumber))

input()的结果始终是一个字符串,即使它由数字组成。

答案 1 :(得分:1)

该行:

input_user=input()

将使input_user成为str,除非您对此采取任何措施(即将其分配给另一个变量),否则您将失去之前与之相关的任何值。

请注意,当行是:

input_user=23

input_user 一个int

要使代码正常工作,您可以在进行比较之前强制转换input()的结果,例如

import random

random_number=random.randrange(0,100)
print('Random Number: ', random_number)

input_number = None
while input_number != random_number:
    input_number = int(input("enter number: "))
    if input_number < random_number:
        print("very less")
    elif (input_number > random_number):
        print("very big")
    else:
        print("correct: ", random_number)

请注意,这不是处理输入内容的可靠方法,因为不插入数字会引发ValueError

更好的方法可能是使用try/except构造捕获错误:

import random

random_number=random.randrange(0,100)
print('Random Number: ', random_number)

input_number = None
while input_number != random_number:
    try:
        input_number = int(input("enter number: "))
    except ValueError:
        input_number = None
    else:
        if input_number < random_number:
            print("very less")
        elif (input_number > random_number):
            print("very big")
        else:
            print("correct: ", random_number)