Python简单数字比较

标签 python if-statement random comparison

问题:

计算机随机生成一个数字。用户输入一个数字,计算机会告诉你是否太高或太低。然后你将继续猜测,直到猜出数字为止。

我的解决方案:

import random

computer = random.randint(1, 500)

def guessNumber():      
    user = raw_input('> ')
    while user != computer:
            if user > computer:
                print "Your number is too big"
                user = raw_input('> ')
            else:
                    print "Naa! too small. Try a bit higher number"
                    user = raw_input('> ')
     print "Now the numbers are equal"

不幸的是,我的代码从未通过 if 语句运行,即使这样,即使我为用户输入“1”,它也总是打印“您的数字太大”。

最佳答案

raw_input() 返回一个字符串值。先把它变成整数:

user = int(raw_input('> '))

由于 Python 2 将数字排序在字符串之前,因此,无论输入什么内容,您的 user > computer 测试将始终返回 True:

>>> '' > 0
True

Python 3 纠正了这个问题:

>>> '' > 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() > int()

请注意,如果用户未输入有效数字,int() 将抛出 ValueError:

>>> int('42')
42
>>> int('fortytwo')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'fortytwo'

您可能想要明确处理该问题:

def askForNumber():
    while True:
        try:
            return int(raw_input('> '))
        except ValueError:
            print "Not a number, please try again"


def guessNumber():
    user = askForNumber()
    while user != computer:
        if user > computer:
            print "Your number is too big"
            user = askForNumber()
        else:
            print "Naa! too small. Try a bit higher number"
            user = askForNumber()
    print "Now the numbers are equal"

关于Python简单数字比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19010328/

相关文章:

python - 为特定地区/国家生成随机坐标的轻量级工具?

python - 令人困惑的变量作用域(来自外部作用域的隐藏变量)

python - FFmpeg 将 .mp3 输出保存到变量中

python - 脚本每 24 小时重新启动一次 Heroku

python - 有效地查找 numpy 数组中二进制字符串中的位位置

java - Java扫描文件并匹配字符串(寻找更好的方法)

Powershell 如果格式化

c - 如何在C中读取并保存txt的可变部分

algorithm - 生成总和为 n 的随机数

c++ - 从 C++ 中的随机访问文件读取访问冲突