我们可以缩短这个脚本吗?甚至是奇怪的检查

时间:2018-03-26 03:15:40

标签: 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
        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')

3 个答案:

答案 0 :(得分:1)

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

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-loop语句来轻松实现它。有关此主题的更多信息,请访问here

接下来,您必须添加try-except语句,因为正在进行stringinteger转换。

print('Your number is %s' % ('even' if int(input('Please enter an integer: ')) % 2 == 0 else 'odd'))

如果输入为偶数,则此语句将返回"Your number is even",否则它将返回"Your number is odd"。此方法称为python ternary operator
然后你可以用print-function包装它来打印返回的字符串。看here

input('Enter (y or yes) to retry: ') not in ['y', 'yes']

检查给定列表中的用户输入是否不存在。因此,如果用户输入不是"y""yes"while-loop将会中断。

答案 1 :(得分:0)

以下是如何使代码更简单的示例。请记住,代码应该很少重复。在大多数情况下,如果您有重复的代码行,可以简化它。

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')

答案 2 :(得分:0)

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

您没有在程序中导入sys ,因为您没有使用它而您不必这样做。您不必将任何内容存储在while循环的变量中。只需 分配True并突破 即可。如果您正在寻找任何True(包括一个空的列表,字符串和字典;以及不等于0的数字)。如果var: ,您应该 。如果变量的计算结果为True。将执行条件块。这是一个更清晰的语法,因此建议使用。使用单词命名变量,而不是用字母命名。这不会使您的代码更长,并且会使您的代码更好。

这就是我可以用你的代码做的全部。如果还有更多,请说出来。