用py字符串切片方式写一个程序,要求实现输入1到12中的一个整数,输出对应的月份
时间: 2023-05-28 21:04:30 浏览: 76
num = input("请输入一个1到12的整数:")
month = ["", "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
if num.isdigit() and int(num) in range(1, 13):
print(month[int(num)])
else:
print("输入无效!")
相关问题
输入不少于6个的整数,删除一个最小值、删除一个最大值,输出余下整数的平均值(四舍五入保留到小数点后2位)。程序保存到s4A.py。 程序执行效果: 输入整数序列:2,3,1,6,9,5,8 输出:avg=4.80 【操作提示】 1、得到整数序列的方法 使用input函数得到输入的整数序列(字符串)后,可以利用eval 函数将其转换为元组。如:s="2,3,1,6",则eval(s)的值为(2,3,1.6)。 2、平均值的计算 有二个思路: (1)使用 sorted函数对元组排序,得到排序后的列表。再对列表切片a[1:-1]求和(使用sum函数)后再计算平均值。数值个数可由len函数得到。 最小值,再将元组的元素和(使用sum函数)减去最 (2)利用max函数和min函数得到元组的最大、 大、最小值后再计算平均值。
以下是代码实现:
```python
s = input("输入整数序列:")
nums = eval(s) # 将字符串转换为元组
# 方法一:使用 sorted 函数和切片
nums_sorted = sorted(nums)
avg = sum(nums_sorted[1:-1]) / (len(nums_sorted) - 2)
# 方法二:使用 max 函数和 min 函数
max_num = max(nums)
min_num = min(nums)
sum_nums = sum(nums)
avg = (sum_nums - max_num - min_num) / (len(nums) - 2)
print("avg={:.2f}".format(avg)) # 保留两位小数输出
```
执行效果:
```
输入整数序列:2,3,1,6,9,5,8
avg=4.80
```
用非递归函数和递归函数实现回文数的判定方法py
### 回答1:
使用非递归函数实现回文数判定:
```python
def is_palindrome_iter(num):
num_str = str(num)
left = 0
right = len(num_str) - 1
while left < right:
if num_str[left] != num_str[right]:
return False
left += 1
right -= 1
return True
```
使用递归函数实现回文数判定:
```python
def is_palindrome_rec(num_str):
if len(num_str) <= 1:
return True
elif num_str[0] != num_str[-1]:
return False
else:
return is_palindrome_rec(num_str[1:-1])
```
注意:以上两个函数都是针对整数或者字符串实现回文数判定,如果输入不是整数或者字符串,需要进行类型检查和转换。
### 回答2:
非递归函数实现回文数的判定方法:
```python
def is_palindrome(num):
str_num = str(num)
length = len(str_num)
for i in range(length//2):
if str_num[i] != str_num[length-i-1]:
return False
return True
num = input("请输入一个数字:")
if is_palindrome(num):
print("是回文数")
else:
print("不是回文数")
```
递归函数实现回文数的判定方法:
```python
def is_palindrome_recursive(num):
str_num = str(num)
length = len(str_num)
if length <= 1:
return True
if str_num[0] != str_num[length-1]:
return False
return is_palindrome_recursive(str_num[1:length-1])
num = input("请输入一个数字:")
if is_palindrome_recursive(num):
print("是回文数")
else:
print("不是回文数")
```
以上两种方法都可以用来判断一个数字是否是回文数。非递归方法通过比较数字的首尾字符来判断是否是回文数,若有不相等的字符则返回False,遍历完全部字符后返回True。递归方法则通过每次对数字去除首尾字符的方式来判断,若数字长度小于等于1则返回True,若首尾字符不相等则返回False,否则递归调用判断去除首尾字符后的数字。
### 回答3:
使用非递归函数判断回文数的方法是首先将数字转化为字符串,然后利用字符串的切片操作进行判断。具体步骤如下:
1. 将数字转化为字符串:使用内置函数`str()`将数字转化为字符串类型。
2. 判断回文数:将字符串进行切片操作,然后与原字符串进行逆序对比。
```python
def is_palindrome_nonrecursive(num):
# 将数字转化为字符串
num_str = str(num)
# 利用切片操作判断回文数
if num_str == num_str[::-1]:
return True
else:
return False
num = 12321
print(is_palindrome_nonrecursive(num))
```
使用递归函数判断回文数的方法是对比数字的首位和末位是否相等,如果相等,则将去掉首位和末位的数字作为新的输入,继续进行递归判断。具体步骤如下:
1. 定义递归函数:传入两个参数,表示数字的首位和末位。
2. 实现递归判断:首先判断首位和末位是否相等,如果相等,则递归调用函数,输入去掉首位和末位的数字,否则返回False。
```python
def is_palindrome_recursive(num, first, last):
# 首位和末位相等,进行递归
if first == last:
# 判断是否到达最后一个数字
if num < 10:
return True
else:
# 去掉首位和末位的数字,进行递归
new_num = (num - first - last) // 10
# 获取新数字的首位和末位
new_first = new_num // 10**(len(str(new_num))-1)
new_last = new_num % 10
return is_palindrome_recursive(new_num, new_first, new_last)
else:
return False
num = 12321
first = num // 10**(len(str(num))-1)
last = num % 10
print(is_palindrome_recursive(num, first, last))
```
这样就可以使用非递归函数和递归函数实现回文数的判定方法。