给定来自用户输入的字符串,我想将其转换为Fixnum
或者Integer
如果字符串是有效的int.如果字符串是float,我不想转换为int.如果失败,我想尝试将字符串转换为a Float
.如果字符串不是其中任何一个,我打算只引发异常.
似乎String#to_i
只是截断任何Float
值而不是提供任何类型的错误.我知道我可以做一些regexing以确定a是否String
是一个有效的int,但似乎应该有一些内置的转换失败,如果String
有任何其他数字.我错过了什么吗?
例如.我希望这样的事情失败而不是回归1
irb(main):092:0> "1.4".to_i
=> 1
irb(main):093:0> "1.4e5".to_i
=> 1
Run Code Online (Sandbox Code Playgroud) 显示0和1的矩阵
编写一个使用以下标题显示n-by-n矩阵的函数:
Run Code Online (Sandbox Code Playgroud)def printMatrix(n):
每个元素是
0
或1
,是随机生成的.写提示用户输入n,并显示一个测试程序n
-by-n
矩阵.这是一个示例运行:Run Code Online (Sandbox Code Playgroud)Enter n: 3 010 000 111
这是我的想法:
from __future__ import print_function
from random import randint, choice
import random
def printMatrix (n):
n = 1
matrix = (
[str(randint(0, 1)) for _ in range(0, n)] for _ in range(0, n)
)
for row in matrix:
print(" ".join(row))
def main():
n = int(input ("Enter an interger number:"))
main()
Run Code Online (Sandbox Code Playgroud) 我正在试图弄清楚对forward_iterators reference
类型的要求是什么.在明显的情况下,你将拥有value_type = T;
和reference = T&;
.我看到了读取前向迭代器需求的cppreference页面
Expression Return Equivalent expression
*i++ reference value_type& temp=*i; ++i; return temp;
Run Code Online (Sandbox Code Playgroud)
std::vector<bool>
表明"等效表达式"并不总是有效,因为它返回一个代理对象:
std::vector<bool> v(10);
auto i = v.begin();
std::vector<bool>::iterator::value_type& temp = *i; // error
// can't bind bool& to std::_Bit_reference
Run Code Online (Sandbox Code Playgroud)
我看到的标准中没有提到等效表达式.代理对象允许分配,这可能是一致性的关键.
除了试图确定要求之外,我的具体问题涉及知道是否具有value_type
== reference
既不是引用也不支持赋值,也适用于标准库.
将一些Container<int>
带有iterator
标记为forward_iterator_tag
和reference == int
有效吗?
问题:确定用户输入的pos,neg和0的数量.
c中的代码:
#include <stdio.h>
void main() {
int pos, neg, zero = 0 ;
char x[7] ;
int num = 0 ;
printf("\nPress Q to quit anytime");
while( printf("\n") , gets(x)) {
num = atoi(x) ;
if( !strcmp(x , "Q")) break ;
if( num > 0) pos++ ;
else if (num < 0) neg++ ;
else zero++ ;
}
printf("\nPos nos: %d \tNeg nos: %d \tZeros: %d", pos, neg, zero);
}
Run Code Online (Sandbox Code Playgroud)
在这里,虽然正数和负数被正确计算,但积极却不是.它总是显示正数,偏移量为4196240,即如果有4个正数,则显示4196244.
关于4196240怎么这么特别?为什么会显示这个?
有人可以向我解释C++中const iterator
引用和non-const iterator
引用之间的区别吗?为什么我不能non-const iterator
在print
函数中使用引用?
以下代码无法编译.
#include <deque>
#include <iostream>
using namespace std;
template<typename T> ostream & print(T & start, T & end) {
for (; start != end; ++start) {
cout << *start << " ";
}
return cout;
}
int main() {
int tab[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
deque<int> d1(tab, tab + 10);
deque<int> d2;
deque<int>::iterator it;
for (it = d1.begin(); it != d1.end(); …
Run Code Online (Sandbox Code Playgroud) 调用是否意味着已经调用并完成/返回析构函数,或者只是调用了它?我想到了后者,直到我在12.4 Destructors部分看到这句话(多个草稿都有这个):
一旦为对象调用析构函数,该对象就不再存在
如果调用意味着调用已经开始,则意味着this
在析构函数体中无效.
如果调用意味着调用并完成,则意味着对象在其析构函数运行时仍然" 存在 "并且可以从另一个线程访问(这是我首先看到的标准).其他答案声称情况并非如此,但不要与消息来源支持,所以我倾向于认为他们错了.
我正在尝试运行一个切换用户的脚本(遵循此答案)。我无法在其中设置变量。我尝试了很多事情,但最基本的是:
sudo -u other_user bash << EOF
V=test
echo "${V}"
EOF
Run Code Online (Sandbox Code Playgroud)
更现实的是,我正在做类似以下的事情:
sudo -u other_user bash << EOF
cd
V=$(ls)
echo "${V}"
EOF
Run Code Online (Sandbox Code Playgroud)
每次我尝试使用该变量时,V
它都会被取消设置。如何设置变量?
我需要在运行服务器后立即读取 csv 文件。它不能在任何视图中完成,因为它需要预加载以执行所有视图,所以我需要在“manage.py runserver”之后立即执行。是否有任何文件可以编写我需要首先执行的代码?
找不到语法错误或编译错误.为什么这个程序不执行?如果没有编译错误,我无法理解为什么这个程序没有运行.在下面的代码中,逻辑上可能出现什么问题?我可以在此代码中添加哪些内容以使其运行和交互?
def main():
print "Checking platform...\r\r\r"
platform = systemdetails()
def systemdetails():
print "Hello! Welcome to the auto-commander"
print "Please enter the platform specific number to automate."
platforminput = integer(input ("1. Cisco 2. Linux/Unix 3. Juniper 4. VMware vSphere/NSX \n:"))
if platforminput ==1:
platform='cisco_ios'
elif platforminput ==2:
platform='linux'
elif platforminput ==3:
platform='juniper'
elif platforminput ==4:
platform='vmware'
else:
print "Commander has to repeat the question...\n\n"
systemdetails()
return platform
Run Code Online (Sandbox Code Playgroud) 假设我有一个数组,int array[3] = {1,2,3};
我想交换第一个和最后一个元素,以便我有array = {3,2,1};
如何使用STL执行此操作?