Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我们能把这个脚本缩短吗?奇偶校验_Python - Fatal编程技术网

Python 我们能把这个脚本缩短吗?奇偶校验

Python 我们能把这个脚本缩短吗?奇偶校验,python,Python,嗨,我在学python 我想知道这个脚本是更好还是更短 import sys g = 1 def trying(): q = input('enter (y or yes) to retry') if not q == 'y' or q == 'yes': return 0 while g == True: try: t = int(input('please enter an integer:')) r = t % 2

嗨,我在学python 我想知道这个脚本是更好还是更短

import sys
g = 1
def trying():
    q = input('enter (y or yes) to retry')
    if not q == 'y' or q == 'yes':
        return 0
while g == True:
    try:
        t = int(input('please enter an integer:'))
        r = t % 2
        if r == 0:
            print('your number is even')
            if trying() == 0:
                g = 0
        else:
            print('your number is odd')
            if trying() == 0:
                g = 0
    except ValueError:
        print('sorry you need to enter numbers only')

下面是一个如何简化代码的示例。请记住,代码应该很少重复。在大多数情况下,如果有重复的代码行,则可以简化

while True:
    try:
        t = int(input('please enter an integer:'))
        if t % 2 == 0: print('your number is even')
        else: print('your number is odd')

        q = input('enter (y or yes) to retry')
        if not (q == 'y' or q == 'yes'): break

    except ValueError:
        print('sorry you need to enter numbers only')
您不必在程序中导入sys,因为您没有使用它,也不必这样做。在一个循环中,不必在变量中存储任何内容。只需赋值为真并爆发即可。如果您正在查找任何正确的内容(包括非空列表、字符串和字典;以及不等于0的数字)。如果var:,则应设置。如果变量的计算结果为True。将执行条件块。这是一种更清晰的语法,因此建议使用。用单词而不是字母命名变量。这不会使您的代码变长,而且会使您的代码变得更好


这就是我对你的代码所能做的。如果还有更多,请说明。

如果你想用更短的,这是我的版本

while True:
    try:
        print('Your number is %s' % ('even' if int(input('Please enter an integer: ')) % 2 == 0 else 'odd'))
        if  input('Enter (y or yes) to retry: ') not in ['y', 'yes']: break

    except ValueError:
        print('Sorry you need to enter numbers only')
这里需要的是一个
do while
循环。通过将
break
语句添加到无限
while循环
,您可以轻松实现它。更多关于这个主题的信息可以找到

接下来,您必须添加一个
try except
语句,因为有一个
字符串
整数
的转换正在进行

print('Your number is %s' % ('even' if int(input('Please enter an integer: ')) % 2 == 0 else 'odd'))
此语句将返回
“您的号码是偶数”
如果输入是偶数,则返回
“您的号码是奇数”
。此方法称为
然后,您可以使用
打印函数
对其进行包装,以打印返回的字符串。看


这将检查用户输入是否不在给定列表中。因此,如果用户输入既不是
“y”
也不是
“yes”
while循环将中断。

我认为您需要
如果不是(q='y'或q='yes'):
您可以在修复上述错误后(并确保您的代码完成了它应该做的事情之后)尝试一下。您的版本非常完美:开发第三行的较短版本:
打印(“如果int(输入(“输入一个数字”))%2==0,则您的数字为%s.“%”偶数“)%2==0,否则为“奇数”
。这将利用字符串格式减少两个“您的数字为…”声明进入one@LeviLesches:我忘了,谢谢!!我编辑了答案小技巧,如果你想要更短的代码:不要声明一个要使用一次的变量。只需当场定义它!例如:用输入行替换t。此外,冒号后不必有换行符。我认为在缩短的代码和r之间有一个重要的权衡可读取代码。
print('Your number is %s' % ('even' if int(input('Please enter an integer: ')) % 2 == 0 else 'odd'))
input('Enter (y or yes) to retry: ') not in ['y', 'yes']