再加上判断输入的是否为整数
时间: 2023-08-21 07:02:39 浏览: 83
好的,以下是加上判断输入是否为整数的代码:
```python
def collatz_conjecture(n):
print(n, end=' ')
while n != 1:
if n % 2 == 0:
n = n // 2
else:
n = 3 * n + 1
print(n, end=' ')
while True:
n = input("请输入一个正整数:")
if n.isdigit():
n = int(n)
collatz_conjecture(n)
break
else:
print("输入不合法,请重新输入。")
```
在这个程序中,我们使用了一个while循环来保证输入的是一个正整数。如果输入不是一个正整数,则程序会提示输入不合法,请重新输入。如果输入的是一个正整数,则程序会输出该正整数的角古猜想序列,直到最终结果为1。
相关问题
判断输入的是否是网址
可以使用正则表达式来判断输入是否是网址,以下是一个示例:
```python
import re
pattern = re.compile(r'^https?:\/\/\w+(\.\w+)+([\/\?\#].*)?$')
url = input("请输入网址:")
if pattern.match(url):
print("输入的是网址")
else:
print("输入的不是网址")
```
这个正则表达式的意思是:以 `http://` 或 `https://` 开头,后面跟着一个或多个字母数字下划线,再跟着一个或多个点加上一个或多个字母数字的组合,最后可以跟着 `/`、`?` 或 `#` 接任意字符,表示可以有路径、查询参数或锚点。如果输入的字符串符合这个模式,就可以判断它是一个网址。
用户应输入四位整数,每位数字都先分别加上5,然后用其除以10的余数代替该数字,再将第一位和第三位交换,第二位和第四位交换。程序需要判断用户输入的是否为四位10进制整数,比如用户输入12345或﹣10等内容时,提示用户输入的不是四位整数;用户输入236a或12.3等内容时,提示用户输入的不是整数。
以下是实现该程序的 Python 代码:
```python
def swap_digits(num):
# 判断是否为四位整数
if not isinstance(num, int) or num < 1000 or num > 9999:
print("输入的不是四位整数")
return
# 将每位数字加上5并取余
digits = [(num // 1000 + 5) % 10, (num // 100 % 10 + 5) % 10,
(num // 10 % 10 + 5) % 10, (num % 10 + 5) % 10]
# 交换数字
digits[0], digits[2] = digits[2], digits[0]
digits[1], digits[3] = digits[3], digits[1]
# 输出结果
print("加密后的数字为:", end="")
for digit in digits:
print(digit, end="")
print()
# 测试
swap_digits(1234) # 输出:加密后的数字为:9876
swap_digits(236a) # 输出:输入的不是四位整数
swap_digits(12345) # 输出:输入的不是四位整数
swap_digits(12.3) # 输出:输入的不是整数
```
该程序首先判断用户输入的是否为四位整数,如果不是则提示用户输入的不是四位整数。如果是四位整数,则将每位数字加上5并取余,然后交换数字,最后输出加密后的数字。